我有一个简单的控制台应用程序,使用Symfony控制台组件。
我有两个命令(比如cmdOne
和cmdTwo
),可以很容易地独立调用。
$ myApp.php cmdOne
$ myApp.php cmdTwo
这两个命令都有相当多的输出,我可以通过发出 -q
选项轻松静音。
现在,我想cmdOne
打电话给cmdTwo
但我希望cmdTwo
保持安静。我并没有试图做任何疯狂的事情,但尽管阅读了文档,但我正在努力取得任何进展。
这是我到目前为止的示例代码(此代码片段将包含在cmdOne->execute()
中):
$command = $this->getApplication()->find('cmdTwo');
$input = new ArrayInput(array(
'command' => 'cmdTwo',
'-q' => true
));
$returnCode = $command->run($input, $output);
这运行良好,就像在代码命令执行中一样,但是控制台上有输出(由cmdTwo
生成),我不想显示。
指定-q
选项是不可能的,因为它是"保留的"(即不是由开发人员创建的),还是我错过了一些明显的东西?
与其传递相同的$output
实例(输出到当前控制台的实例),不如创建一个NullOutput
$returnCode = $command->run($input, new 'Symfony'Component'Console'Output'NullOutput);
它基本上是一个黑洞 - 它接受输出并静默地丢弃它。