web-dev-qa-db-fra.com

Comment charger et utiliser des bibliothèques externes dans un composant?

Je me demande comment charger des bibliothèques php "externes" dans mon composant.

Je voudrais récupérer le courrier via imap. Pour que cela fonctionne, je voudrais utiliser une bibliothèque capable de gérer les mails encodés en smime.

Mon script d'installation a fonctionné - il télécharge la bibliothèque vers/lib/phpimap.

Comment puis-je l'inclure dans mon composant sans changer la façon dont la bibliothèque est écrite?

Autant que je sache, je pourrais utiliser JLoader::discover pour faire ça.

Cependant, si j'utilise:

JLoader::discover('PhpImap', JPATH_LIBRARIES . '/phpimap');

il ne "détecterait" que les classes de/lib/phpimap qui commencent par "PhpImap" - mais les classes sont nommées d'une autre manière et sans aucune sorte de préfixe standard.

Comment puis-je résoudre ça?

2
MyFault

Comme vous avez remarqué que Joomla Loader fonctionne de manière Joomla, vous devez vous fournir des classes J pour le charger.

La réponse est donc: il suffit d'inclure la bibliothèque de la même manière que ce qui est montré dans ses exemples. Une bonne pratique consiste à créer des classes J pour encapsuler les appels de bibliothèque.

JLoader :: discover suit un protocole de nommage, mais JLoader :: register permet d’enregistrer et de charger automatiquement des classes spécifiques:

JLoader::register('MyClass', .... . '/myclass.php');
2
Anibal