setName('examplecommand:helloworld'); $this->setDescription('ExampleCommandDescription'); $this->addRequiredValueOption('name', null, 'Your name:'); } /** * Interact with the user. * * This method is executed before the InputDefinition is validated. * This means that this is the only place where the command can * interactively ask for values of missing required arguments. */ protected function doInteract(): void { } /** * Initializes the command after the input has been bound and before the input * is validated. * * This is mainly useful when a lot of commands extends one main command * where some things need to be initialized based on the input arguments and options. */ protected function doInitialize(): void { } /** * The actual task is defined in this method. Here you can access any option or argument that was defined on the * command line via $this->getInput() and write anything to the console via $this->getOutput(). * In case anything went wrong during the execution you should throw an exception to make sure the user will get a * useful error message and to make sure the command does not exit with the status code 0. * * Ideally, the actual command is quite short as it acts like a controller. It should only receive the input values, * execute the task by calling a method of another class and output any useful information. * * Execute the command like: ./console examplecommand:helloworld --name="The Matomo Team" */ protected function doExecute(): int { $input = $this->getInput(); $output = $this->getOutput(); $name = $input->getOption('name'); $message = sprintf('HelloWorld: %s', $name); $output->writeln($message); return self::SUCCESS; } }