Cover of the book Symfony 5: The Fast Track

Symfony 5: The Fast Track is the best book to learn modern Symfony development, from zero to production. +300 pages in full color showing how to combine Symfony with Docker, APIs, queues & async tasks, Webpack, Single-Page Applications, etc.

Buy printed version

Changing the Default Command

Changing the Default Command

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:

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 static $defaultName = 'hello:world';

    protected function configure()
        $this->setDescription('Outputs "Hello World"');

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

Executing the application and changing the default command:

// application.php
use Acme\Console\Command\HelloWorldCommand;
use Symfony\Component\Console\Application;

$command = new HelloWorldCommand();
$application = new Application();

Test the new default console command by running the following:

$ php application.php

This will print the following to the command line:

Hello World


This feature has a limitation: you cannot pass any argument or option to the default command because they are ignored.

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