Tester un fichier PHP sans l'exécuter
Voici un nouveau cas particulier, comme je les affectionne, en espérant que cela soit utile à quelqu'un. L'objectif est, ici, de tester un fichier PHP, sans l'exécuter. Évidemment, il ne sera pas possible tester le fonctionnement du code. Par contre, cela permettra d'en vérifier la syntaxe.
Cette action se fait avec la version en ligne de commande (CLI) de PHP, comme cela
php -l le/chemin/vers/mon/fichier/php
Sans erreur, vous obtiendrez le résultat
No syntax errors detected in le/chemin/vers/mon/fichier/php
Sinon, vous obtiendrez la liste des erreurs du fichier, et le message se terminera par
Errors parsing le/chemin/vers/mon/fichier/php
Tester un fichier, c'est bien, en tester plusieurs, c'est mieux !
Profitons d'être dans un terminal pour utiliser ses capacités. Il est facile de tester un lot de fichiers avec les commandes find et exec, déjà vues dans cet article.
find le/chemin/vers/le/dossier/ -name "*.php" -exec php -l {} \;
La commande find va trouver tous les fichiers dont l'extension est .php dans les dossiers et sous-dossiers du dossier le/chemin/vers/le/dossier/. Puis, exec va tester les fichiers que renvoie find.
Pour tester un gros projet avec de très nombreux fichiers PHP, et éviter un résultat composé d'un trop grand nombre de lignes, il est possible d'utiliser
find le/chemin/vers/le/dossier/ -name "*.php" -exec php -l {} \; | grep "Errors parsing "
Ainsi, avec grep, seuls les fichiers avec erreurs vont ressortir, ainsi que les erreurs.