Frameworks CLI pour PHP : des scripts simples aux applications console professionnelles
Les applications console (CLI — Command Line Interface) restent une partie essentielle du développement moderne. Elles sont utilisées pour l'automatisation des tâches, le traitement de données, les migrations, l'exécution de tests et l'administration de serveurs. PHP, malgré sa réputation de « langage web », offre d'excellentes possibilités pour créer des outils CLI puissants. Dans cet article, nous examinerons les meilleurs frameworks et bibliothèques pour le développement d'applications console en PHP, qui vous aideront à passer de scripts simples à des solutions structurées, testables et évolutives.
Pourquoi utiliser un framework CLI plutôt qu'un simple script ?
Écrire un script console « à partir de zéro » semble simple, mais conduit rapidement à des problèmes :
- Traitement des arguments : analyser
$argvet$argcmanuellement est fastidieux et sujet aux erreurs. - Affichage des informations : couleurs, barres de progression, tableaux — tout cela nécessite une implémentation séparée.
- Structure du code : il est difficile d'organiser plusieurs commandes dans un seul fichier.
- Tests : les scripts console sont difficiles à tester sans outils spéciaux.
L'utilisation d'un framework résout ces problèmes et fournit une architecture prête à l'emploi, un conteneur DI, un système d'événements et une intégration avec des bibliothèques populaires.
Symfony Console — l'étalon-or
Symfony Console est un composant de l'écosystème Symfony qui est devenu le standard de facto pour la création d'applications CLI en PHP. Il est utilisé dans Laravel (via Artisan), Doctrine, Composer et de nombreux autres projets.
Installation et exemple de base
composer require symfony/consoleCréons une commande simple qui salue l'utilisateur :
<?php// greet.phprequire __DIR__ . '/vendor/autoload.php';
use Symfony\\Component\\Console\\Application;use Symfony\\Component\\Console\\Command\\Command;use Symfony\\Component\\Console\\Input\\InputInterface;use Symfony\\Component\\Console\\Output\\OutputInterface;use Symfony\\Component\\Console\\Input\\InputArgument;
class GreetCommand extends Command{ protected static $defaultName = 'app:greet';
protected function configure(): void { $this->setDescription('Salue l\'utilisateur') ->addArgument('name', InputArgument::REQUIRED, 'Nom de l\'utilisateur'); }
protected function execute(InputInterface $input, OutputInterface $output): int { $name = $input->getArgument('name'); $output->writeln("Bonjour, <info>$name</info> !"); return Command::SUCCESS; }}
$application = new Application();$application->add(new GreetCommand());$application->run();Exécution : php greet.php app:greet Jean affichera Bonjour, Jean ! en vert.
Principales fonctionnalités de Symfony Console
- Génération automatique d'aide : les commandes
listethelpfonctionnent « prêtes à l'emploi ». - Types d'arguments et d'options : obligatoires/facultatifs, tableaux, valeurs par défaut.
- Formatage de la sortie : balises
<info>,<comment>,<error>pour la couleur. - Barres de progression et tableaux : classes intégrées
ProgressBaretTable. - Support des questions : saisie interactive via
QuestionHelper. - Événements et cycle de vie : possibilité d'intercepter l'exécution de la commande.
Exemple avec une barre de progression
use Symfony\\Component\\Console\\Helper\\ProgressBar;
protected function execute(InputInterface $input, Outpu Aussi dans la bibliothèque
Génération de PDF en Rust : aperçu des bibliothèques et outils pour créer des documents PDF
Travailler avec Kafka en TypeScript : la bibliothèque KafkaJS pour Node.js
Travailler avec S3 et les stockages cloud en TypeScript : guide complet
Helmet pour JavaScript (Node.js) : guide complet avec exemples