Skip to content

Commit

Permalink
[Console] improve deprecation warning triggers
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
xabbuh committed Dec 1, 2014
1 parent 3b7f035 commit 88e3314
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 9 deletions.
6 changes: 3 additions & 3 deletions src/Symfony/Component/Console/Application.php
Expand Up @@ -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(),
Expand Down
9 changes: 7 additions & 2 deletions src/Symfony/Component/Console/Helper/DialogHelper.php
Expand Up @@ -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;

Expand All @@ -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.
*
Expand Down
8 changes: 8 additions & 0 deletions src/Symfony/Component/Console/Helper/HelperSet.php
Expand Up @@ -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];
}

Expand Down
9 changes: 7 additions & 2 deletions src/Symfony/Component/Console/Helper/ProgressHelper.php
Expand Up @@ -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.
*
Expand Down Expand Up @@ -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.
*
Expand Down
6 changes: 4 additions & 2 deletions src/Symfony/Component/Console/Helper/TableHelper.php
Expand Up @@ -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());
}
Expand Down

0 comments on commit 88e3314

Please sign in to comment.