Frameworks CLI para PHP: criando aplicações de console com Symfony Console e Laravel Zero

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Frameworks CLI para PHP: de scripts simples a aplicações de console profissionais



As aplicações de console (CLI — Command Line Interface) continuam sendo uma parte essencial do desenvolvimento moderno. Elas são usadas para automatizar tarefas, processar dados, migrações, executar testes e administrar servidores. O PHP, apesar de sua reputação de "linguagem web", oferece excelentes oportunidades para criar ferramentas CLI poderosas. Neste artigo, veremos os melhores frameworks e bibliotecas para desenvolver aplicações de console em PHP, que o ajudarão a passar de scripts simples para soluções estruturadas, testáveis e escaláveis.



Por que usar um framework CLI em vez de um script simples?

Escrever um script de console "do zero" parece simples, mas rapidamente leva a problemas:

  • Processamento de argumentos: analisar $argv e $argc manualmente é tedioso e propenso a erros.
  • Saída de informações: cores, barras de progresso, tabelas — tudo isso requer implementação separada.
  • Estrutura do código: é difícil organizar vários comandos em um único arquivo.
  • Testes: scripts de console são difíceis de testar sem ferramentas especiais.

Usar um framework resolve esses problemas e fornece uma arquitetura pronta, contêiner DI, sistema de eventos e integração com bibliotecas populares.



Symfony Console — o padrão ouro

Symfony Console é um componente do ecossistema Symfony que se tornou o padrão de facto para criar aplicações CLI em PHP. Ele é usado no Laravel (através do Artisan), Doctrine, Composer e muitos outros projetos.



Instalação e exemplo básico

composer require symfony/console


Vamos criar um comando simples que cumprimenta o usuário:

<?php// greet.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;use Symfony\\Component\\Console\\Input\\InputArgument;

class GreetCommand extends Command{ protected static $defaultName = 'app:greet';

protected function configure(): void { $this->setDescription('Cumprimenta o usuário') ->addArgument('name', InputArgument::REQUIRED, 'Nome do usuário'); }

protected function execute(InputInterface $input, OutputInterface $output): int { $name = $input->getArgument('name'); $output->writeln("Olá, <info>$name</info>!"); return Command::SUCCESS; }}

$application = new Application();$application->add(new GreetCommand());$application->run();


Execução: php greet.php app:greet João exibirá Olá, João! com cor verde.



Principais recursos do Symfony Console

  • Geração automática de ajuda: os comandos list e help funcionam "prontos para uso".
  • Tipos de argumentos e opções: obrigatórios/opcionais, arrays, valores padrão.
  • Formatação de saída: tags <info>, <comment>, <error> para cores.
  • Barras de progresso e tabelas: classes integradas ProgressBar e Table.
  • Suporte a perguntas: entrada interativa através de QuestionHelper.
  • Eventos e ciclo de vida: é possível interceptar a execução do comando.


Exemplo com barra de progresso

use Symfony\\Component\\Console\\Helper\\ProgressBar;

protected function execute(InputInterface $input, Outpu

Recommendations