Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony 覆盖默认控制台帮助文本_Symfony_Console Application - Fatal编程技术网

Symfony 覆盖默认控制台帮助文本

Symfony 覆盖默认控制台帮助文本,symfony,console-application,Symfony,Console Application,我想在使用help或list命令时,完全覆盖Symfony\Component\Console输出的部分默认文本。特别是,verbosity选项的无偿换行让我非常恼火,尽管我最终可能还想稍微修改一下帮助/列表文本的其余部分 也就是说,这一行输出: --verbose-v | vv | vvv增加消息的详细程度:1用于正常输出,2用于更详细的输出,3用于调试。 如果我能把它改成: --verbose-v | vv | vvv设置详细级别。 我可以子类化Symfony\Component\Conso

我想在使用
help
list
命令时,完全覆盖
Symfony\Component\Console
输出的部分默认文本。特别是,verbosity选项的无偿换行让我非常恼火,尽管我最终可能还想稍微修改一下帮助/列表文本的其余部分

也就是说,这一行输出:

--verbose-v | vv | vvv增加消息的详细程度:1用于正常输出,2用于更详细的输出,3用于调试。

如果我能把它改成:

--verbose-v | vv | vvv设置详细级别。

我可以子类化
Symfony\Component\Console\Application
并重写
getDefaultInputDefinition()
方法

我也许可以使用
getDefinition()
setDefinition()
的组合来处理
InputDefinition
对象

但这些似乎不太容易维护


有没有其他更好的方法来实现这一点?

试试这个。我不确定它是否有效,但看起来是最接近的解决方案

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);
}

“详细级别”并没有解释关于选项的任何内容,它只是重复选项名称和值……这是一个填充示例。我可以说“Lorem ipsum dolor”。问题是,作为一名长期使用Unix命令行的用户,我发现Console的默认帮助和列表文本不一致且难看。我想将其更改为符合大多数Unix命令。我发现Console的默认帮助非常有用—比看起来漂亮或符合标准更重要。这就是说,您提出了一个有效的观点,并且应该能够以可维护的方式覆盖这些观点。这很有帮助。但我希望默认设置更简洁,“帮助”更详细。大多数情况下,使用工具的程序员只需要简单地提醒一下可用的选项,而不是更详细的描述。我会尽力让它工作的<代码>致命错误:未捕获异常“LogicException”,消息为“使用InputOption::value\u NONE模式时无法设置默认值”。在../vendor/symfony/console/symfony/Component/console/Input/InputOption.php:162@CXJ抱歉,我的参数顺序不正确。我已经编辑了代码,现在试试:)酷!不客气。这是在黑暗中拍摄的,所以我很高兴它能成功