CLI-frameworks para PHP: criando aplicações de console poderosas
O desenvolvimento moderno em PHP não se limita a aplicações web. Cada vez mais, os desenvolvedores precisam criar ferramentas de console (CLI): processadores de filas, migrações, geradores de relatórios, parsers de dados. Para essas tarefas, existem frameworks especializados que simplificam a criação de comandos de console, processamento de argumentos, formatação de saída e gerenciamento de dependências.
Principais CLI-frameworks para PHP
- Symfony Console — o componente mais popular do Symfony, usado no Laravel, Drupal, Composer e centenas de outros projetos.
- Laravel Zero — micro-framework baseado no Laravel, otimizado para aplicações CLI.
- CLIFramework — framework leve com suporte a autocompletar Zsh/Bash.
- PHP CLI Tools — biblioteca minimalista para scripts simples.
Symfony Console: o padrão universal
O componente symfony/console é o padrão de facto para aplicações CLI em PHP. Ele fornece um conjunto completo de ferramentas para criar comandos, incluindo:
- Análise automática de argumentos e opções de linha de comando.
- Saída formatada com suporte a cores, tabelas e barras de progresso.
- Perguntas interativas e autocompletar.
- Sistema flexível de eventos e ciclo de vida do comando.
// Exemplo de um comando simples no Symfony Console<?php// arquivo: 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('Sauda o usuário') ->addArgument('name', InputArgument::REQUIRED, 'Nome do usuário') ->addOption('yell', null, null, 'Exibir em letras maiúsculas'); }
protected function execute(InputInterface $input, OutputInterface $output): int { $name = $input->getArgument('name'); $message = "Olá, $name!";
if ($input->getOption('yell')) { $message = strtoupper($message); }
$output->writeln($message); return Command::SUCCESS; }}
// Execução: php bin/console app:greet João --yellLaravel Zero: Laravel para linha de comando
Laravel Zero é um micro-framework que traz a conveniência do Laravel (Eloquent ORM, Artisan, Blade, tarefas agendadas) para o mundo CLI. É ideal para criar utilitários de console independentes que não exigem interface web.
Principais recursos do Laravel Zero:
- Sintaxe familiar de comandos Artisan.
- Suporte embutido a banco de dados (SQLite, MySQL).
- Agendador de tarefas (funcionalidade semelhante ao Cron).
- Formatação de saída com tabelas e barras de progresso.
- Possibilidade de compilação em um único arquivo PHAR.
// Exemplo de comando no Laravel Zero<?php// arquivo: app/Commands/ExportUsers.phpnamespace App\\Commands;
use Illuminate\\Console\\Command;use App\\Models\\User;
class ExportUsers extends Command{ protected $signature = 'export:users {--format=csv : Formato de saída (csv/json)}'; protected $description = 'Exporta a lista de usuários';
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 = [' Também na biblioteca
Autorização e Autenticação em C# (.NET): Guia Completo
Trabalhando com datas em JavaScript (Node.js): bibliotecas populares
InversifyJS: Contêiner IoC para aplicações TypeScript
Trabalhando com Markdown em Go: bibliotecas blackfriday, goldmark e chroma
Trabalhando com YAML em Java: bibliotecas SnakeYAML e Jackson