Vous utilisez peut-être des dépendances PHP non déclarées dans composer.json

Dans vos projets PHP, vous utilisez probablement des dépendances externes (frameworks, bibliothèques, interfaces, etc).

Afin de simplifier la gestion de ces dépendances, vous pouvez devez utiliser le gestionnaire de dépendances composer.

Au delà de vous éviter de télécharger manuellement chacune des dépendances, composer va gérer les dépendances de vos dépendances.

Exemple de dépendances de dépendances avec composer 🚀

Si vous installez zend-mvc pour organiser le code de votre application web, celui-ci installera également zend-view (pour le rendu) ou encore zend-http (pour la requête et la réponse).

composer require zendframework/zend-mvc

Autrement dit, en indiquant à composer que votre projet à besoin de zendframework/zend-mvc, celui-ci va télécharger cette bibliothèque mais téléchargera également l’ensemble des bibliothèques requises par cette dépendance, et ainsi de suite jusqu’à avoir téléchargé l’ensemble des classes nécessaires pour que la dépendance que vous avez explicitement déclarée puisse fonctionner.

zend-view et zend-http seront donc accessibles dans votre application au même titre que zend-mvc.

Voyez-vous le problème arriver ? 😀

Que se passerait-il si je commence à utiliser zend-http dans mon application, puis, que lors d’une mise à jour de zend-mvc, celui-ci décide de se séparer de cette dépendance ? Et bien, composer supprimera automatiquement la dépendance car elle n’aura finalement jamais été déclarée dans mon fichier composer.json.

La solution : ComposerRequireChecker 💪

L’outil maglnet/ComposerRequireChecker va vous permettre de scanner votre projet pour retrouver toutes les classes chargées depuis le dossier de dépendances vendor mais qui ne sont pas explicitement déclarées dans le
composer.json de votre projet.

Installez composerRequireChecker à l’aide de composer ou en téléchargeant simplement le package phar.

composer require maglnet/composer-require-checker --dev

Ensuite, exécutez composer-require-checker.phar à l’aide de PHP en lui indiquant l’action check et le chemin du fichier composer.json de votre projet.

php composer-require-checker.phar check composer.json

Si vous êtes dans votre projet, la commande suivante fonctionne également

php composer-require-checker
ComposerRequireChecker 0.19.1-15-gad3694c-dev
The following unknown symbols were found:
+---------------------------+--------------------+
| unknown symbol            | guessed dependency |
+---------------------------+--------------------+
| Zend\Http\Response        |                    |
| Zend\Http\Headers         |                    |
| json_encode               | ext-json           |
| Zend\View\Model\JsonModel |                    |
+---------------------------+--------------------+

Corriger les « soft » dépendances

Il faut donc corriger les dépendances manquantes en les déclarant explicitement :

  • Pour celles ayant une guessed dependency, il suffit de la déclarer
  • Pour les autres, rechercher votre package sur packagist.org pour retrouver son nom.

Dans notre exemple, voici les déclarations des dépendances manquantes :

composer require ext-json
composer require zendframework/zend-view
composer require zendframework/zend-http

Vous pouvez maintenant vérifier une dernière fois vos dépendances :

php composer-require-checker
ComposerRequireChecker 0.19.1-15-gad3694c-dev
There were no unknown symbols found.

Voilà, je vous conseille d’aller vérifier vos projets, vous pourriez être surpris ! 😇

Ressources récentes