Frameworks CLI para PHP: Symfony Console e Laravel Zero — guia completo

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

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 --yell


Laravel 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 = ['

Recommendations