Frameworks CLI pour PHP : Symfony Console et Laravel Zero — guide complet

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 : créez des applications console puissantes

Le développement moderne en PHP ne se limite pas aux applications web. De plus en plus, les développeurs ont besoin de créer des outils console (CLI) : gestionnaires de files d'attente, migrations, générateurs de rapports, analyseurs de données. Pour ces tâches, il existe des frameworks spécialisés qui simplifient la création de commandes console, le traitement des arguments, le formatage de la sortie et la gestion des dépendances.



Principaux frameworks CLI pour PHP

  • Symfony Console — le composant le plus populaire de Symfony, utilisé dans Laravel, Drupal, Composer et des centaines d'autres projets.
  • Laravel Zero — un micro-framework basé sur Laravel, optimisé pour les applications CLI.
  • CLIFramework — un framework léger avec prise en charge de l'autocomplétion Zsh/Bash.
  • PHP CLI Tools — une bibliothèque minimaliste pour les scripts simples.


Symfony Console : le standard universel

Le composant symfony/console est de facto le standard pour les applications CLI en PHP. Il fournit un ensemble complet d'outils pour créer des commandes, notamment :

  • Analyse automatique des arguments et options de la ligne de commande.
  • Sortie formatée avec prise en charge des couleurs, des tableaux et des barres de progression.
  • Questions interactives et autocomplétion.
  • Système flexible d'événements et de cycle de vie des commandes.


// Exemple de commande simple avec Symfony Console<?php// fichier : src/Command/GreetCommand.phpnamespace App\\Command;

use Symfony\\Component\\Console\\Command\\Command;use Symfony\\Component\\Console\\Input\\InputArgument;use Symfony\\Component\\Console\\Input\\InputInterface;use Symfony\\Component\\Console\\Output\\OutputInterface;

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') ->addOption('yell', null, null, 'Afficher en majuscules'); }

protected function execute(InputInterface $input, OutputInterface $output): int { $name = $input->getArgument('name'); $message = "Bonjour, $name !";

if ($input->getOption('yell')) { $message = strtoupper($message); }

$output->writeln($message); return Command::SUCCESS; }}

// Exécution : php bin/console app:greet Jean --yell


Laravel Zero : Laravel pour la ligne de commande

Laravel Zero est un micro-framework qui transpose la commodité de Laravel (Eloquent ORM, Artisan, Blade, tâches planifiées) dans le monde CLI. Il est idéal pour créer des utilitaires console autonomes ne nécessitant pas d'interface web.



Fonctionnalités clés de Laravel Zero :

  • Syntaxe familière des commandes Artisan.
  • Prise en charge intégrée des bases de données (SQLite, MySQL).
  • Planificateur de tâches (fonctionnalité de type Cron).
  • Formatage de la sortie avec des tableaux et des barres de progression.
  • Possibilité de compilation en un seul fichier PHAR.


// Exemple de commande dans Laravel Zero<?php// fichier : app/Commands/ExportUsers.phpnamespace App\\Commands;

use Illuminate\\Console\\Command;use App\\Models\\User;

class ExportUsers extends Command{ protected $signature = 'export:users {--format=csv : Format de sortie (csv/json)}'; protected $description = 'Exporte la liste des utilisateurs';

public function handle(): int { $users = User::all(['id', 'name', 'email']); $format = $this->option('format');

if ($format === 'json') { $this->line($users->toJson(JSON_PRETTY_PRINT)); } else { $headers = ['

Recommendations