Dans tous les projets PHP que je fais, reviennent à peu près toujours les mêmes besoins :
- Faire des tests,
- M’assurer que le code respectent certaines conventions et standards,
- Vérifier que le code fonctionnera pour un maximum de version de PHP.
Pour ces besoins, je finis toujours par utiliser les mêmes outils et je me retrouve assez souvent avec la même configuration dans mes fichiers « composer.json » :
"require-dev": {
"phpunit/phpunit": "^4.8 || ^5.5",
"squizlabs/php_codesniffer": "^2.7",
"phpmd/phpmd": "^2.4",
"theseer/phpdox": "^0.8 || ^0.9.0",
"sebastian/phpcpd": "^2.0",
"nikic/php-parser": "^1.3 || 3.*@beta",
"phpbench/phpbench": "^0.10 || ^0.12.0",
"phing/phing": "^2.15",
"phploc/phploc": "^2.1 || ^3.0",
"friendsofphp/php-cs-fixer": "^1.12",
"sensiolabs/security-checker": "^4.0"
}
Composer permet de spécifier différents types de composants, en particulier le type « metapackage » :
Un paquet vide contenant des dépendances et qui déclenchera leur installation, sans fichier supplémentaire ni écriture dans le système de fichier. À ce titre, il ne requiert ni d’entrée "dist" ou "source" pour être installable.
Je me suis donc fabriqué mon propre meta-paquets JamesRezo/QaTools qu’il suffira de définir comme dépendance dans les projets qui requièrent ces outils.
"require-dev" : {
"jamesrezo/qatools": "^1.0"
}
Il existe beaucoup d’autres metapackage de ce genre, souvent mis en place pour le développement d’un framework, comme https://github.com/bearsunday/BEAR.... qui ne fonctionne qu’à partir de PHP5.6, https://github.com/lovullo/phpqatools qui installe les mêmes outils mais dans des versions assez anciennes, et surtout https://github.com/h4cc/phpqatools le premier metapackage que j’ai découvert et qui m’a servi de référence pour faire le mien.