From 88e3314476ef639b63abe2eabb4795ce5b4cd0d8 Mon Sep 17 00:00:00 2001 From: Christian Flothmann Date: Mon, 1 Dec 2014 20:40:50 +0100 Subject: [PATCH] [Console] improve deprecation warning triggers Since the default helper set of the Console `Application` relies on the `DialogHelper`, the `ProgressHelper` and the `TableHelper`, there must be a way to not always trigger `E_USER_DEPRECATION` errors when one of these helper is used. --- src/Symfony/Component/Console/Application.php | 6 +++--- src/Symfony/Component/Console/Helper/DialogHelper.php | 9 +++++++-- src/Symfony/Component/Console/Helper/HelperSet.php | 8 ++++++++ src/Symfony/Component/Console/Helper/ProgressHelper.php | 9 +++++++-- src/Symfony/Component/Console/Helper/TableHelper.php | 6 ++++-- 5 files changed, 29 insertions(+), 9 deletions(-) diff --git a/src/Symfony/Component/Console/Application.php b/src/Symfony/Component/Console/Application.php index e102b7ebb8940..53860b322625c 100644 --- a/src/Symfony/Component/Console/Application.php +++ b/src/Symfony/Component/Console/Application.php @@ -950,9 +950,9 @@ protected function getDefaultHelperSet() { return new HelperSet(array( new FormatterHelper(), - new DialogHelper(), - new ProgressHelper(), - new TableHelper(), + new DialogHelper(false), + new ProgressHelper(false), + new TableHelper(false), new DebugFormatterHelper(), new ProcessHelper(), new QuestionHelper(), diff --git a/src/Symfony/Component/Console/Helper/DialogHelper.php b/src/Symfony/Component/Console/Helper/DialogHelper.php index 5158677ef96ea..c14c855373caf 100644 --- a/src/Symfony/Component/Console/Helper/DialogHelper.php +++ b/src/Symfony/Component/Console/Helper/DialogHelper.php @@ -11,8 +11,6 @@ namespace Symfony\Component\Console\Helper; -trigger_error('\Symfony\Component\Console\Helper\DialogHelper is deprecated since version 2.5 and will be removed in 3.0. Use QuestionHelper instead.', E_USER_DEPRECATED); - use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Formatter\OutputFormatterStyle; @@ -30,6 +28,13 @@ class DialogHelper extends InputAwareHelper private static $shell; private static $stty; + public function __construct($triggerDeprecationError = true) + { + if ($triggerDeprecationError) { + trigger_error('"Symfony\Component\Console\Helper\DialogHelper" is deprecated since version 2.5 and will be removed in 3.0. Use "Symfony\Component\Console\Helper\QuestionHelper" instead.', E_USER_DEPRECATED); + } + } + /** * Asks the user to select a value. * diff --git a/src/Symfony/Component/Console/Helper/HelperSet.php b/src/Symfony/Component/Console/Helper/HelperSet.php index 76fa2e4cba9d8..8834eba6c5bb9 100644 --- a/src/Symfony/Component/Console/Helper/HelperSet.php +++ b/src/Symfony/Component/Console/Helper/HelperSet.php @@ -78,6 +78,14 @@ public function get($name) throw new \InvalidArgumentException(sprintf('The helper "%s" is not defined.', $name)); } + if ('dialog' === $name && $this->helpers[$name] instanceof DialogHelper) { + trigger_error('"Symfony\Component\Console\Helper\DialogHelper" is deprecated since version 2.5 and will be removed in 3.0. Use "Symfony\Component\Console\Helper\QuestionHelper" instead.', E_USER_DEPRECATED); + } elseif ('progress' === $name && $this->helpers[$name] instanceof ProgressHelper) { + trigger_error('"Symfony\Component\Console\Helper\ProgressHelper" is deprecated since version 2.5 and will be removed in 3.0. Use "Symfony\Component\Console\Helper\ProgressBar" instead.', E_USER_DEPRECATED); + } elseif ('table' === $name && $this->helpers[$name] instanceof TableHelper) { + trigger_error('"Symfony\Component\Console\Helper\TableHelper" is deprecated since version 2.5 and will be removed in 3.0. Use "Symfony\Component\Console\Helper\Table" instead.', E_USER_DEPRECATED); + } + return $this->helpers[$name]; } diff --git a/src/Symfony/Component/Console/Helper/ProgressHelper.php b/src/Symfony/Component/Console/Helper/ProgressHelper.php index 8c48bdb6d9a54..f83d09602beba 100644 --- a/src/Symfony/Component/Console/Helper/ProgressHelper.php +++ b/src/Symfony/Component/Console/Helper/ProgressHelper.php @@ -14,8 +14,6 @@ use Symfony\Component\Console\Output\NullOutput; use Symfony\Component\Console\Output\OutputInterface; -trigger_error('The "ProgressHelper" class is deprecated since version 2.5 and will be removed in 3.0. Use "ProgressBar" class instead.', E_USER_DEPRECATED); - /** * The Progress class provides helpers to display progress output. * @@ -119,6 +117,13 @@ class ProgressHelper extends Helper array(604800, 'days', 86400), ); + public function __construct($triggerDeprecationError = true) + { + if ($triggerDeprecationError) { + trigger_error('"Symfony\Component\Console\Helper\ProgressHelper" is deprecated since version 2.5 and will be removed in 3.0. Use "Symfony\Component\Console\Helper\ProgressBar" instead.', E_USER_DEPRECATED); + } + } + /** * Sets the progress bar width. * diff --git a/src/Symfony/Component/Console/Helper/TableHelper.php b/src/Symfony/Component/Console/Helper/TableHelper.php index e3c078bf8e3f6..cde4beeaedd82 100644 --- a/src/Symfony/Component/Console/Helper/TableHelper.php +++ b/src/Symfony/Component/Console/Helper/TableHelper.php @@ -33,9 +33,11 @@ class TableHelper extends Helper */ private $table; - public function __construct() + public function __construct($triggerDeprecationError = true) { - trigger_error('The TableHelper class was deprecated in version 2.5 and will be removed in 3.0. Use Symfony\Component\Console\Helper\Table instead.', E_USER_DEPRECATED); + if ($triggerDeprecationError) { + trigger_error('"Symfony\Component\Console\Helper\TableHelper" is deprecated since version 2.5 and will be removed in 3.0. Use "Symfony\Component\Console\Helper\Table" instead.', E_USER_DEPRECATED); + } $this->table = new Table(new NullOutput()); }