Connexion de bibliothèques PHP tierces dans Joomla
Lors du développement de sites Web ou d'extensions pour Joomla, des tâches qui ont déjà été résolues par quelqu'un surviennent parfois. Dans le monde du développement, ces solutions sont conçues comme des bibliothèques - des ensembles de fichiers et de classes qui permettent simplement de les brancher dans votre script et d'utiliser du code écrit et bien testé par d'autres développeurs. Il peut s'agir de bibliothèques php pour le traitement d'images, le travail avec PDF, la connexion à des services tiers via l'API REST, et bien plus encore.
Les bibliothèques PHP sont pratiques car elles sont accessibles depuis n'importe où dans l'application: à partir d'un plugin, d'un modèle de composant, d'un module, etc. Cet article explique comment connecter correctement un SDK PHP tiers à votre projet.
Compositeur
Joomla ne supporte pas de travailler directement avec Composer. Pour utiliser la bibliothèque dans votre travail, vous devez l'envelopper dans un type d'extension Joomla bibliothèque et l'installer. Dans les projets sérieux, l'approche de fixation des versions de toutes les composantes du projet est adoptée: le code a été vérifié plus d'une fois, testé et autorisé à travailler dans la production.
Vous créez un package avec votre bibliothèque, l'installez partout où vous en avez besoin. Au fur et à mesure que de nouvelles versions de la bibliothèque sont publiées, vous mettez à jour votre wrapper et bénéficiez de tous les avantages de travailler avec les extensions Joomla: mettre à jour les extensions de manière standard, y compris via la CLI.Voir le Changelog de l'extension dans la zone d'administration AVANT la mise à jour, etc.

Joomla, PSR, Symfony
Joomla est conforme aux normes PSR, il est donc pratique de travailler avec elle à cet égard. Certains paquets Symfony sont inclus dans le noyau Joomla (console, ficelle, vardumper, yaml, Gestionnaire d'erreurs et d'autres), donc si vous voulez soudainement en ajouter plus, ils s'intégreront et fonctionneront bien. Vous pouvez voir ce qu'il y a d'autre dans Joomla en plus des composants Symfony dans bibliothèques/fournisseurs.
Comment envelopper une bibliothèque PHP tierce dans une extension Joomla?
Rien de compliqué. Les fichiers de la bibliothèque sont généralement situés dans le src dossier. À côté de ce dossier, vous devez créer un manifeste XML de l'extension Joomla en fonction de la documentation (manuel.joomla.org). Ensuite, nous emballons tout dans une archive zip et c'est tout! Il peut être installé.
Si vous avez besoin de vos propres tables dans la base de données pour que la bibliothèque fonctionne, vous devez ajouter les fichiers nécessaires avec des requêtes SQL lors de l'installation ou de la mise à jour. Comme Joomla 4+ fonctionne avec des espaces de noms, il est important de spécifier cet espace de noms dans le manifeste XML de l'extension. Voici un exemple abrégé d'un manifeste XML pour la bibliothèque Joomla.
<?xml version="1.0" encoding="UTF-8" ?>
<extension type="library" method="upgrade"> </fichiers> <nom>Bibliothèque WebTolk AmoCRM</nom> </extension> <nom de la bibliothèque>Webtolk/Amocrm</nom de la bibliothèque> Le<version>1.2.1</version> tag signifie que le ... le dossier de notre archive sera copié dans <namespace path="src">Webtolk\Amocrm</namespace> . Dans le <fichiers> section, nous indiquons ce qui doit être rempli à partir de l'archive. Et <folder>src</folder> dit que l'espace de noms<nom du fichier>amocrm.xml</nom du fichier>
doit être enregistré pour le
src <fichiers> JPATH_SITE/bibliothèques/Webtolk/Amocrm dossier dans <namespace path="src">Webtolk\Amocrm</namespace> . Webtolk\Amocrm <nom de la bibliothèque> src
<espace de nommage> JPATH_SITE/bibliothèques/Webtolk/Amocrm onAfterInitialize Des notes importantes! JLoader Par conséquent, il était nécessaire d'ajouter un plugin système au paquet de bibliothèque qui enregistrerait l'espace de noms sur le À partir de Joomla 4.2.7, il a été corrigé et vous pouvez vous passer du plugin. événement (Event Dispatcher) en utilisant Autrement dit, l'extension est supprimée et installée. Cette décision a été prise quelque part dans les profondeurs des versions de Joomla 3.x. Pourquoi? - caché sous les montagnes de PR. Des recherches supplémentaires sont nécessaires pour trouver les raisons de prendre une telle décision. classe. En conséquence, il était nécessaire de construire un paquet à partir de la bibliothèque et du plugin. Parce que lors de l'installation d'une extension, une entrée est créée dans le "registre" des extensions - dans la base de donnéesAvant Joomla 4.2.7, en fait, le tag table. Ce tableau comporte 2 colonnes de typedu manifeste XML n'a pas fonctionné.
-
et Pourquoi est-ce important? . Et cela, vous devez l'admettre, est une quantité considérable de données. Si vous stockez des paramètres de bibliothèque dans une base de données en utilisant #__extensionsEnsuite, vous devez prendre en compte ce comportement de l'installateur et pré-enregistrer, puis ajouter les paramètres enregistrés au script d'installation de l'extension lors de la mise à jour de la bibliothèque. TEXTE Jusqu'à présent, mettre à jour la bibliothèque = réinstaller.
custom_data params
utiliser Joomla\CMS\Helper\LibraryHelper; Joomla\CMS\Helper\LibraryHelper utiliser Joomla\CMS\Cache\Cache; <?php