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 ! 😇