From 5535c882989db027c0c637ee0813f94ac9876909 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micka=C3=ABl=20Andrieu?= Date: Mon, 15 Aug 2016 05:11:28 +0200 Subject: [PATCH] Updated single command How to --- components/console/single_command_tool.rst | 113 +++++++++------------ 1 file changed, 48 insertions(+), 65 deletions(-) diff --git a/components/console/single_command_tool.rst b/components/console/single_command_tool.rst index 609f7a0c2e3..8b0396ba9b7 100644 --- a/components/console/single_command_tool.rst +++ b/components/console/single_command_tool.rst @@ -6,68 +6,51 @@ Building a single Command Application When building a command line tool, you may not need to provide several commands. In such case, having to pass the command name each time is tedious. Fortunately, -it is possible to remove this need by extending the application:: - - namespace Acme\Tool; - - use Symfony\Component\Console\Application; - use Symfony\Component\Console\Input\InputInterface; - - class MyApplication extends Application - { - /** - * Gets the name of the command based on input. - * - * @param InputInterface $input The input interface - * - * @return string The command name - */ - protected function getCommandName(InputInterface $input) - { - // This should return the name of your command. - return 'my_command'; - } - - /** - * Gets the default commands that should always be available. - * - * @return array An array of default Command instances - */ - protected function getDefaultCommands() - { - // Keep the core default commands to have the HelpCommand - // which is used when using the --help option - $defaultCommands = parent::getDefaultCommands(); - - $defaultCommands[] = new MyCommand(); - - return $defaultCommands; - } - - /** - * Overridden so that the application doesn't expect the command - * name to be the first argument. - */ - public function getDefinition() - { - $inputDefinition = parent::getDefinition(); - // clear out the normal first argument, which is the command name - $inputDefinition->setArguments(); - - return $inputDefinition; - } - } - -When calling your console script, the command ``MyCommand`` will then always -be used, without having to pass its name. - -You can also simplify how you execute the application:: - - #!/usr/bin/env php - run(); +it is possible to remove this need by declaring a single command application:: + + #!/usr/bin/env php + register('echo') + ->addArgument('foo', InputArgument::OPTIONAL, 'The directory') + ->addOption('bar', null, InputOption::VALUE_REQUIRED) + ->setCode(function(InputInterface $input, OutputInterface $output) { + // output arguments and options + }) + ->getApplication() + ->setDefaultCommand('echo', true) // Single command application + ->run(); + +The method :method:`Symfony\\Component\\Console\\Application::setDefaultCommand` +accepts a boolean as second parameter. If true, the command ``echo`` will then +always be used, without having to pass its name. + +Of course, you can still register a command as usual:: + + #!/usr/bin/env php + add($command); + + $application->setDefaultCommand($command->getName(), true); + $application->run(); pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy