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 --yellLaravel 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 = [' Aussi dans la bibliothèque
Bibliothèque GraphQL en C++ : implémentation d'API avec graphql-cpp
Travailler avec YAML dans Node.js : bibliothèques js-yaml et yaml
Autorisation et authentification en Rust : bibliothèques et outils
Bibliothèques GraphQL Kotlin : aperçu complet pour les développeurs backend
Envoi d'email en Go (Golang) : bibliothèques et exemples de code