Componente Console: comandos CLI
Crie ferramentas interativas CLI usando classes Command do Symfony Console.
Componente Console: comandos CLI é uma aula grátis de PHP Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de PHP Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de PHP Academy inclui 4 aulas no total.
O que é o componente Console do Symfony?
Symfony Console permite criar aplicações CLI estruturadas e testáveis em PHP, com opções, argumentos, barras de progresso e saída colorida.
Instalando
Instale o componente.
$ composer require symfony/consoleCriando um comando
Estenda Command e substitua configure() e execute().
<?php
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
class GreetCommand extends Command
{
protected static string $defaultName = "app:greet";
protected function configure(): void
{
$this->setDescription("Greet a user")
->addArgument("name", \InputArgument::REQUIRED, "Name to greet")
->addOption("uppercase", "u", \InputOption::VALUE_NONE, "Uppercase output");
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$name = $input->getArgument("name");
if ($input->getOption("uppercase")) $name = strtoupper($name);
$output->writeln("Hello, $name!");
return Command::SUCCESS;
}
}Configurando a aplicação
Registre comandos em uma Application e execute-a.
<?php
use Symfony\Component\Console\Application;
$app = new Application("MyApp", "1.0.0");
$app->add(new GreetCommand());
$app->run();Argumentos e opções
Os argumentos são posicionais (obrigatórios ou opcionais). As opções são sinalizadores nomeados (--name=value ou -n value).
<?php
$this->addArgument("file", InputArgument::REQUIRED)
->addArgument("output", InputArgument::OPTIONAL, "Output file", "out.txt")
->addOption("verbose", "v", InputOption::VALUE_NONE, "Verbose output")
->addOption("format", "f", InputOption::VALUE_REQUIRED, "Output format", "json");Auxiliares de saída
Formate a saída com métodos auxiliares.
<?php
$output->writeln("<info>Success!</info>");
$output->writeln("<error>Error occurred</error>");
$output->writeln("<comment>Processing...</comment>");ProgressBar
Exiba uma barra de progresso para tarefas demoradas.
<?php
use Symfony\Component\Console\Helper\ProgressBar;
$bar = new ProgressBar($output, count($items));
$bar->start();
foreach ($items as $item) {
processItem($item);
$bar->advance();
}
$bar->finish();Auxiliar de tabelas
Exiba dados tabulares no terminal.
<?php
use Symfony\Component\Console\Helper\Table;
$table = new Table($output);
$table->setHeaders(["ID", "Name", "Email"])
->setRows($userData)
->render();Auxiliar de perguntas
Solicite a entrada do usuário de forma interativa.
<?php
use Symfony\Component\Console\Question\Question;
$helper = $this->getHelper("question");
$question = new Question("Enter database password: ");
$question->setHidden(true);
$password = $helper->ask($input, $output, $question);Códigos de retorno
Retorne Command::SUCCESS (0), Command::FAILURE (1) ou Command::INVALID (2) a partir de execute(). Os sistemas de CI usam esses códigos.
No Laravel
Os comandos Artisan do Laravel estendem Illuminate\Console\Command e usam as propriedades $signature e $description em vez de configure().
Resumo
Crie comandos estendendo Command. Defina argumentos e opções em configure(). Execute a lógica em execute(). Use auxiliares para barras de progresso, tabelas e solicitações ao usuário.
Verificação rápida
Qual número inteiro um comando bem-sucedido deve retornar a partir de execute()?
Perguntas Frequentes
A aula “Componente Console: comandos CLI” é grátis?
Sim — o texto completo de “Componente Console: comandos CLI” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de PHP Academy, atualize para CoddyKit PRO. O curso de PHP Academy inclui 4 aulas no total.
O que vou aprender em “Componente Console: comandos CLI”?
Crie ferramentas interativas CLI usando classes Command do Symfony Console. Você pratica PHP Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar PHP Academy?
Nenhuma experiência prévia é necessária. PHP Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Componente Console: comandos CLI”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de PHP Academy?
Sim. Cada aula de PHP Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- HttpFoundation: solicitação e resposta
- Contêiner de DependencyInjection
- EventDispatcher: eventos desacoplados
- Componente Console: comandos CLI