Changing the Default Command
Warning: You are browsing the documentation for Symfony 6.3, which is no longer maintained.
Read the updated version of this page for Symfony 7.1 (the current stable version).
The Console component will always run the ListCommand
when no command name is
passed. In order to change the default command you need to pass the command
name to the setDefaultCommand()
method:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
namespace Acme\Console\Command;
use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
#[AsCommand(name: 'hello:world')]
class HelloWorldCommand extends Command
{
protected function configure(): void
{
$this->setDescription('Outputs "Hello World"');
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$output->writeln('Hello World');
return Command::SUCCESS;
}
}
Executing the application and changing the default command:
1 2 3 4 5 6 7 8 9
// application.php
use Acme\Console\Command\HelloWorldCommand;
use Symfony\Component\Console\Application;
$command = new HelloWorldCommand();
$application = new Application();
$application->add($command);
$application->setDefaultCommand($command->getName());
$application->run();
Test the new default console command by running the following:
1
$ php application.php
This will print the following to the command line:
1
Hello World
Caution
This feature has a limitation: you cannot pass any argument or option to the default command because they are ignored.