Frameworks CLI pour PHP : création d'applications console avec Symfony Console et Laravel Zero

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

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 $argv et $argc manuellement 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/console


Cré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 list et help fonctionnent « 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 ProgressBar et Table.
  • 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

Recommendations