PHP n'est pas que pour le web : pourquoi votre prochain outil CLI devrait être écrit en PHP
Quand on entend « PHP », la première association est souvent les sites web, WordPress et les echo infinis dans le navigateur. Mais PHP est un véritable couteau suisse pour le développeur. L'une de ses fonctionnalités les plus sous-estimées est la possibilité de créer de véritables utilitaires CLI en PHP. Oui, oui, ces programmes console qui aident à automatiser les tâches répétitives, analyser les logs, générer des rapports et rendre la vie de l'ingénieur DevOps un peu plus facile.
Dans cet article, nous n'allons pas simplement parler théorie. Nous allons prendre et écrire à partir de zéro plusieurs applications console en PHP réelles. Vous apprendrez à traiter les arguments de ligne de commande, colorer la sortie, afficher des barres de progression et même créer des menus interactifs. À la fin de l'article, vous aurez un modèle prêt à l'emploi que vous pourrez utiliser immédiatement dans vos projets.
Pourquoi PHP pour la CLI ? 3 arguments solides
Avant de plonger dans le code, voyons pourquoi utiliser PHP pour créer des utilitaires CLI. Il y a Python, Node.js, Go…
- Vous connaissez déjà PHP. Si vous êtes développeur web PHP, vous n'avez pas besoin d'apprendre une nouvelle syntaxe pour écrire un script de sauvegarde de base de données ou de déploiement.
- Écosystème unifié. Vous pouvez utiliser les mêmes bibliothèques (via Composer), les mêmes ORM et les mêmes moteurs de templates. Vous voulez un script qui génère un rapport PDF à partir de la base de données ? Pas de problème.
- Rapidité de développement. Les scripts PHP s'écrivent très rapidement. Pour les utilitaires simples, c'est idéal – pas besoin de compiler, de configurer l'environnement, il suffit de lancer et c'est parti.
Bien sûr, pour des démons à forte charge ou des utilitaires système complexes, il vaut mieux prendre C ou Rust. Mais pour 90% des tâches quotidiennes, PHP est parfaitement adapté.
De zéro à votre premier utilitaire CLI : hello, world! dans le terminal
Commençons par le plus simple. Créez un fichier hello.php et écrivez :
#!/usr/bin/env php<?php
echo "Bonjour, terminal !";La première ligne est le shebang. Elle indique au système que ce fichier doit être exécuté avec PHP. Sans elle, vous devrez écrire php hello.php à chaque fois, alors qu'avec elle, il suffit de faire ./hello.php.
N'oubliez pas de donner les droits d'exécution au fichier :
chmod +x hello.phpMaintenant, lancez :
./hello.phpFélicitations ! Vous venez de créer votre premier utilitaire CLI en PHP. C'est incroyablement simple, n'est-ce pas ?
Travailler avec les arguments : rendre l'utilitaire utile
Tout programme console sérieux doit pouvoir accepter des arguments. PHP fournit deux superglobales pour cela : $argv et $argc.
$argv— tableau des arguments. Le premier élément est le nom du script.$argc— nombre d'arguments.
Écrivons une simple calculatrice – additionnons deux nombres passés en arguments.
Calculatrice simple en PHP CLI
#!/usr/bin/env php<?php
if ($argc !== 3) { echo "Utilisation : {$argv[0]} <nombre1> <nombre2>"; exit(1);}
$a = (int)$argv[1];$b = (int)$argv[2];
echo "Somme : " . ($a + $b) . "";echo "Différence : " . ($a - $b) . "";echo "Produit : " . ($a * $b) . "";echo "Quotient : " . ($a / $b) . "";Lançons :
./calc.php 10 5Sortie :
Somme : 15Différence : 5Produit : 50Quotient : 2Mais c'est trop primitif. Dans les projets réels, on a besoin d'arguments nommés (flags), comme dans git commit -m "message". Pour cela, PHP a la fonction getopt().
Arguments nommés avec getopt()
#!/usr/bin/env php<?php
$shortOptions = "u