WARNING: You are browsing the documentation for Symfony 2.6 which is not maintained anymore. Consider upgrading your projects to Symfony 4.1.

Changing the Default Command

2.6 version

Changing the Default Command

New in version 2.5: The setDefaultCommand() method was introduced in Symfony 2.5.

The Console component will always run the ListCommand when no command name is passed. In order to change the default command you just 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
namespace Acme\Console\Command;

use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;

class HelloWorldCommand extends Command
{
    protected function configure()
    {
        $this->setName('hello:world')
            ->setDescription('Outputs \'Hello World\'');
    }

    protected function execute(InputInterface $input, OutputInterface $output)
    {
        $output->writeln('Hello World');
    }
}

Executing the application and changing the default Command:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
// 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

Tip

This feature has a limitation: you cannot use it with any Command arguments.

This work, including the code samples, is licensed under a Creative Commons BY-SA 3.0 license.