Qu'est-ce qu'un framework CLI pour PHP et pourquoi en a-t-on besoin ?
Un framework CLI (Command Line Interface) pour PHP est un outil qui simplifie la création d'applications console et de scripts. Au lieu d'analyser manuellement les arguments $argv et de gérer les entrées/sorties, vous obtenez une architecture prête à l'emploi avec la prise en charge des commandes, des options, de la sortie colorée, des barres de progression et même des menus interactifs.
Dans le développement PHP moderne, les frameworks CLI sont utilisés partout :
- Automatisation des tâches (migrations BDD, mise en cache, déploiement)
- Génération de code (scaffolding)
- Scripts CRON et gestionnaires d'arrière-plan
- Outils DevOps et CI/CD
Examinons cinq des solutions les plus populaires que vous pouvez utiliser sur pythonlib.ru.
1. Symfony Console — le standard de l'industrie
Symfony Console est le framework CLI le plus mature et le plus populaire pour PHP. Il est utilisé dans Laravel Artisan, Doctrine, Composer et des centaines d'autres projets.
Installation
composer require symfony/consoleExemple : une application simple "Hello World"
// hello.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;
class HelloCommand extends Command{ protected static $defaultName = 'app:hello';
protected function configure(): void { $this->setDescription('Salutation de l\\'utilisateur'); }
protected function execute(InputInterface $input, OutputInterface $output): int { $output->writeln('<info>Bonjour le monde !</info>'); return Command::SUCCESS; }}
$application = new Application();$application->add(new HelloCommand());$application->run();Fonctionnalités clés
- Génération automatique de l'aide (
--help) - Prise en charge des options et arguments avec validation
- Sortie colorée via les styles (info, error, comment)
- Barres de progression, tableaux, questions
- Test des commandes via
CommandTester
2. Laravel Zero — micro-framework basé sur Laravel
Laravel Zero est une version allégée de Laravel, optimisée pour la CLI. Idéal si vous êtes habitué à l'écosystème Laravel mais ne voulez pas emporter tout le framework.
Installation
composer create-project laravel-zero/laravel-zero my-cli-appExemple : commande avec arguments
// app/Commands/GreetCommand.phpnamespace App\\Commands;
use LaravelZero\\Framework\\Commands\\Command;
class GreetCommand extends Command{ protected $signature = 'greet {name : Nom de l\\'utilisateur} {--yell : Crier ?}'; protected $description = 'Salutation avec le nom';
public function handle(): int { $name = $this->argument('name'); $message = "Bonjour, $name !"; if ($this->option('yell')) { $message = strtoupper($message); } $this->info($message); return self::SUCCESS; }}Qu'y a-t-il à l'intérieur ?
- Eloquent ORM (optionnel)
- Commandes de style Artisan
- Prise en charge des files d'attente et des tâches
- Migrations et seeding pour la BDD
- Compilation intégrée en archive PHAR
3. Minicli — minimaliste et rapide
Minicli est un framework CLI léger sans dépendances. Il pèse moins de 100 Ko et est idéal pour les microservices et les utilitaires simples.
Installation
composer require minicli/minicliExemple : sondage interactif
// app.phprequire __DIR__ . '/vendor/autoload.ph