当使用Symfony\Component\Console
或help
命令时,我想干净地覆盖list
的部分默认文本输出。特别是,详细程度选项的无偿换行会让我感到很烦恼,尽管我最终可能还想改变其余的帮助/列表文本。
即。这一行输出:
--verbose -v|vv|vvv Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug.
如果我能将其更改为以下内容会更好:
--verbose -v|vv|vvv Set verbosity level.
我可以继承Symfony\Component\Console\Application
并覆盖getDefaultInputDefinition()
方法。
我或许可以使用getDefinition()
和setDefinition()
的组合来摆弄InputDefinition
对象。
但这些似乎不太可维护。
还有其他更好的方法来实现这个目标吗?
答案 0 :(得分:1)
试试这个。我不确定它会起作用,但看起来是最接近的解决方案。
use Symfony\Component\Console\Application;
use Symfony\Component\Console\Input\InputOption;
public function overrideVerboseInputOption(Application $application)
{
$verboseOption = $application->getDefinition()->getOption('verbose');
$customVerboseOption = new InputOption(
$verboseOption->getName(),
$verboseOption->getShortcut(),
InputOption::VALUE_NONE,
"Set verbosity level"
);
$options =& $application->getDefinition()->getOptions();
unset($options['verbose']);
$application->getDefinition()->addOption($customVerboseOption);
}