web-dev-qa-db-fra.com

Utilisation de composer pour la gestion des dépendances dans plugindevelopment

Je suis nouveau dans le développement de plugins wordpress. Normalement, j'utilisais composer pour ajouter des bibliothèques tierces à mon code, mais je ne trouvais pas de plug-in wordpress sur github qui utilise composeur pour cela.

J'ai lu sur wpackagist.org et la manière dont composer peut être utilisé pour gérer les dépendances entre plugins wordpress. Dans ce cas, il y aurait un seul compositeur.json avec toutes les infos.

Mais que se passe-t-il si je veux développer un seul plugin en utilisant composer? Aurais-je simplement inclure l'autoload dans le fichier "racine du plugin"? Mais que se passerait-il si d’autres plug-ins le feraient de la même manière et amèneraient leurs propres chargeurs automatiques et, dans le pire des cas, auraient les mêmes dépendances dans des versions différentes?

Existe-t-il une meilleure pratique pour intégrer lib-dependencies aux plugins wordpress?

5
nonsenz

Il reste encore très peu de WP plugins/thèmes en cours de développement par Composer. Vous pouvez consulter l’étude de cas Laps (un des miens) pour un exemple concret.

Essentiellement, si vous envisagez de distribuer publiquement le plug-in, vous devez prendre en charge les deux cas - en l'exécutant dans le cadre de la pile Composer de l'ensemble du site et en l'exécutant de manière autonome.

En pratique, cela signifie généralement de regarder et de charger sous condition l'autoloader s'il est présent (avec le reste des données du fournisseur) dans le répertoire du plugin. Le long des lignes de:

if ( file_exists( __DIR__ . '/vendor/autoload.php' ) )
    require __DIR__ . '/vendor/autoload.php';

Cela ne résout pas le problème de plusieurs plugins avec des dépendances dupliquées, cependant, c'est pas pire qu'exactement la même chose sans la présence de Composer. En termes simples, WordPress n’a pas de gestion de dépendance native, aussi le seul moyen de le gérer de manière fiable est de l’introduire en externe, telle que la gestion de l’ensemble de la pile WordPress avec Composer.

7
Rarst