O que é um framework CLI para PHP e para que serve?
Um framework CLI (Command Line Interface) para PHP é uma ferramenta que simplifica a criação de aplicações e scripts de console. Em vez de analisar manualmente os argumentos $argv e processar entrada/saída, você obtém uma arquitetura pronta com suporte para comandos, opções, saída colorida, barras de progresso e até menus interativos.
No desenvolvimento PHP moderno, os frameworks CLI são usados em toda parte:
- Automação de tarefas (migrações de BD, cache, deploy)
- Geração de código (scaffolding)
- Scripts CRON e processadores em segundo plano
- Ferramentas DevOps e CI/CD
Vamos analisar as cinco soluções mais populares que você pode usar no pythonlib.ru.
1. Symfony Console — padrão da indústria
Symfony Console é o framework CLI para PHP mais maduro e popular. Ele é usado no Laravel Artisan, Doctrine, Composer e centenas de outros projetos.
Instalação
composer require symfony/consoleExemplo: aplicação simples "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('Saudação ao usuário'); }
protected function execute(InputInterface $input, OutputInterface $output): int { $output->writeln('<info>Olá, mundo!</info>'); return Command::SUCCESS; }}
$application = new Application();$application->add(new HelloCommand());$application->run();Principais recursos
- Geração automática de ajuda (
--help) - Suporte a opções e argumentos com validação
- Saída colorida através de estilos (info, error, comment)
- Barras de progresso, tabelas, perguntas
- Teste de comandos via
CommandTester
2. Laravel Zero — micro-framework baseado no Laravel
Laravel Zero é uma versão leve do Laravel, otimizada para CLI. É ideal se você está acostumado com o ecossistema Laravel, mas não quer carregar todo o framework.
Instalação
composer create-project laravel-zero/laravel-zero my-cli-appExemplo: comando com argumentos
// app/Commands/GreetCommand.phpnamespace App\\Commands;
use LaravelZero\\Framework\\Commands\\Command;
class GreetCommand extends Command{ protected $signature = 'greet {name : Nome do usuário} {--yell : Gritar?}'; protected $description = 'Saudação com nome';
public function handle(): int { $name = $this->argument('name'); $message = "Olá, $name!"; if ($this->option('yell')) { $message = strtoupper($message); } $this->info($message); return self::SUCCESS; }}O que está incluído?
- Eloquent ORM (opcional)
- Comandos no estilo Artisan
- Suporte a filas e tarefas
- Migrações e seeding para BD
- Compilação integrada em arquivo PHAR
3. Minicli — minimalista e rápido
Minicli é um framework CLI leve, sem dependências. Pesa menos de 100 KB e é ideal para microsserviços e utilitários simples.
Instalação
composer require minicli/minicliExemplo: enquete interativa
// app.phprequire __DIR__ . '/vendor/autoload.ph Também na biblioteca
Serialização de objetos em Swift: Codable, NSCoding e JSONEncoder
Aprendizado de Máquina em C++: Visão Geral de Bibliotecas e Ferramentas
Migrações de banco de dados em TypeScript: TypeORM, Prisma e Drizzle
Prisma para TypeScript: guia completo com exemplos