From 52c4d163db5518dec24e99bda55ddfd5da216466 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Mon, 11 Jan 2010 14:46:11 +0100 Subject: [PATCH] [Console] refactored helpers --- .../Components/Console/Application.php | 28 +++++++++++ .../Components/Console/Command/Command.php | 48 +++---------------- .../{InteractHelper.php => DialogHelper.php} | 22 ++++----- .../Console/Helper/FormatterHelper.php | 17 ++++--- .../Components/Console/Helper/Helper.php | 8 ++-- .../Console/Helper/HelperInterface.php | 22 ++++----- .../Components/Console/Helper/HelperSet.php | 9 ++-- 7 files changed, 72 insertions(+), 82 deletions(-) rename src/Symfony/Components/Console/Helper/{InteractHelper.php => DialogHelper.php} (95%) diff --git a/src/Symfony/Components/Console/Application.php b/src/Symfony/Components/Console/Application.php index 4afd90d9aa..7b1a8187fc 100644 --- a/src/Symfony/Components/Console/Application.php +++ b/src/Symfony/Components/Console/Application.php @@ -14,6 +14,9 @@ use Symfony\Components\Console\Output\ConsoleOutput; use Symfony\Components\Console\Command\Command; use Symfony\Components\Console\Command\HelpCommand; use Symfony\Components\Console\Command\ListCommand; +use Symfony\Components\Console\Helper\HelperSet; +use Symfony\Components\Console\Helper\FormatterHelper; +use Symfony\Components\Console\Helper\DialogHelper; /* * This file is part of the symfony framework. @@ -53,6 +56,7 @@ class Application protected $catchExceptions; protected $autoExit; protected $definition; + protected $helperSet; /** * Constructor. @@ -68,6 +72,10 @@ class Application $this->autoExit = true; $this->commands = array(); $this->aliases = array(); + $this->helperSet = new HelperSet(array( + new FormatterHelper(), + new DialogHelper(), + )); $this->addCommand(new HelpCommand()); $this->addCommand(new ListCommand()); @@ -200,6 +208,26 @@ class Application return is_numeric($statusCode) ? $statusCode : 0; } + /** + * Set a helper set to be used with the command. + * + * @param HelperSet $helperSet The helper set + */ + public function setHelperSet(HelperSet $helperSet) + { + $this->helperSet = $helperSet; + } + + /** + * Get the helper set associated with the command + * + * @return HelperSet The HelperSet isntance associated with this command + */ + public function getHelperSet() + { + return $this->helperSet; + } + /** * Gets the InputDefinition related to this Application. * diff --git a/src/Symfony/Components/Console/Command/Command.php b/src/Symfony/Components/Console/Command/Command.php index 7fb727b090..013b239cbf 100644 --- a/src/Symfony/Components/Console/Command/Command.php +++ b/src/Symfony/Components/Console/Command/Command.php @@ -8,9 +8,6 @@ use Symfony\Components\Console\Input\InputArgument; use Symfony\Components\Console\Input\InputInterface; use Symfony\Components\Console\Output\OutputInterface; use Symfony\Components\Console\Application; -use Symfony\Components\Console\Helper\HelperSet; -use Symfony\Components\Console\Helper\FormatterHelper; -use Symfony\Components\Console\Helper\InteractHelper; /* * This file is part of the symfony framework. @@ -45,26 +42,15 @@ class Command /** * Constructor. * - * @param string $name - * @param HelperSet $helperSet A helper set instance + * @param string $name The name of the command */ - public function __construct($name = null, HelperSet $helperSet = null) + public function __construct($name = null) { $this->definition = new InputDefinition(); $this->ignoreValidationErrors = false; $this->applicationDefinitionMerged = false; $this->aliases = array(); - if (null === $helperSet) - { - $helperSet = new HelperSet(array( - new FormatterHelper(), - new InteractHelper(), - )); - } - - $this->setHelperSet($helperSet); - if (null !== $name) { $this->setName($name); @@ -403,39 +389,17 @@ class Command } /** - * Set a helper set to be used with the command. + * Gets a helper instance by name. * - * @param HelperSet $helperSet The helper set - */ - public function setHelperSet(HelperSet $helperSet) - { - $this->helperSet = $helperSet; - - $helperSet->setCommand($this); - } - - /** - * Get the helper set associated with the command - * - * @return HelperSet - */ - public function getHelperSet() - { - return $this->helperSet; - } - - /** - * Gets a helper value. - * - * @param string $name The helper name + * @param string $name The helper name * * @return mixed The helper value * * @throws \InvalidArgumentException if the helper is not defined */ - public function __get($name) + protected function getHelper($name) { - return $this->helperSet->get($name); + return $this->application->getHelperSet()->get($name); } /** diff --git a/src/Symfony/Components/Console/Helper/InteractHelper.php b/src/Symfony/Components/Console/Helper/DialogHelper.php similarity index 95% rename from src/Symfony/Components/Console/Helper/InteractHelper.php rename to src/Symfony/Components/Console/Helper/DialogHelper.php index 0054ab08d3..21b55cef03 100644 --- a/src/Symfony/Components/Console/Helper/InteractHelper.php +++ b/src/Symfony/Components/Console/Helper/DialogHelper.php @@ -14,22 +14,14 @@ use Symfony\Components\Console\Output\OutputInterface; */ /** - * The Interact class provides helpers to interact with the user. + * The Dialog class provides helpers to interact with the user. * * @package symfony - * @subpackage cli + * @subpackage console * @author Fabien Potencier */ -class InteractHelper extends Helper +class DialogHelper extends Helper { - /** - * Returns the helper's canonical name - */ - public function getName() - { - return 'interact'; - } - /** * Asks a question to the user. * @@ -116,4 +108,12 @@ class InteractHelper extends Helper throw $error; // @codeCoverageIgnoreEnd } + + /** + * Returns the helper's canonical name + */ + public function getName() + { + return 'dialog'; + } } diff --git a/src/Symfony/Components/Console/Helper/FormatterHelper.php b/src/Symfony/Components/Console/Helper/FormatterHelper.php index a91064b181..6eedca733a 100644 --- a/src/Symfony/Components/Console/Helper/FormatterHelper.php +++ b/src/Symfony/Components/Console/Helper/FormatterHelper.php @@ -20,14 +20,6 @@ namespace Symfony\Components\Console\Helper; */ class FormatterHelper extends Helper { - /** - * Returns the helper's canonical name - */ - public function getName() - { - return 'formatter'; - } - /** * Formats a message within a section. * @@ -86,5 +78,12 @@ class FormatterHelper extends Helper { return function_exists('mb_strlen') ? mb_strlen($string) : strlen($string); } -} + /** + * Returns the helper's canonical name + */ + public function getName() + { + return 'formatter'; + } +} diff --git a/src/Symfony/Components/Console/Helper/Helper.php b/src/Symfony/Components/Console/Helper/Helper.php index 642e7a67c7..f083b47abe 100644 --- a/src/Symfony/Components/Console/Helper/Helper.php +++ b/src/Symfony/Components/Console/Helper/Helper.php @@ -3,19 +3,19 @@ namespace Symfony\Components\Console\Helper; /* - * This file is part of the symfony package. + * This file is part of the symfony framework. * * (c) Fabien Potencier * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. */ /** * Helper is the base class for all helper classes. * * @package symfony - * @subpackage templating + * @subpackage console * @author Fabien Potencier */ abstract class Helper implements HelperInterface diff --git a/src/Symfony/Components/Console/Helper/HelperInterface.php b/src/Symfony/Components/Console/Helper/HelperInterface.php index a3474fc610..f3de9aa65e 100644 --- a/src/Symfony/Components/Console/Helper/HelperInterface.php +++ b/src/Symfony/Components/Console/Helper/HelperInterface.php @@ -3,30 +3,23 @@ namespace Symfony\Components\Console\Helper; /* - * This file is part of the symfony package. + * This file is part of the symfony framework. * * (c) Fabien Potencier * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. */ /** * HelperInterface is the interface all helpers must implement. * * @package symfony - * @subpackage templating + * @subpackage console * @author Fabien Potencier */ interface HelperInterface { - /** - * Returns the canonical name of this helper. - * - * @return string The canonical name - */ - function getName(); - /** * Sets the helper set associated with this helper. * @@ -40,4 +33,11 @@ interface HelperInterface * @return HelperSet A HelperSet instance */ function getHelperSet(); + + /** + * Returns the canonical name of this helper. + * + * @return string The canonical name + */ + function getName(); } diff --git a/src/Symfony/Components/Console/Helper/HelperSet.php b/src/Symfony/Components/Console/Helper/HelperSet.php index b71e9bd1b7..67d764f52e 100644 --- a/src/Symfony/Components/Console/Helper/HelperSet.php +++ b/src/Symfony/Components/Console/Helper/HelperSet.php @@ -5,19 +5,19 @@ namespace Symfony\Components\Console\Helper; use Symfony\Components\Console\Command\Command; /* - * This file is part of the symfony package. + * This file is part of the symfony framework. * * (c) Fabien Potencier * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. */ /** * HelperSet represents a set of helpers to be used with a command. * * @package symfony - * @subpackage templating + * @subpackage console * @author Fabien Potencier */ class HelperSet @@ -102,4 +102,3 @@ class HelperSet return $this->command; } } -