php - 在另一个命令中调用 Symfony 控制台命令并抑制输出

标签 php symfony console-application

我有一个使用 Symfony 控制台组件的简单控制台应用程序。

我有两个命令(例如,cmdOnecmdTwo),它们可以很容易地独立调用。

$ 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 选项是不可能的,因为它是“保留的”(即不是由开发人员创建的),还是我遗漏了一些明显的东西?

最佳答案

创建一个 NullOutput 实例,而不是传递相同的 $output 实例(输出到当前控制台的实例)

$returnCode = $command->run($input, new \Symfony\Component\Console\Output\NullOutput);

它基本上是一个黑洞 - 它接受输出并静静地丢弃它。

关于php - 在另一个命令中调用 Symfony 控制台命令并抑制输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27852297/

相关文章:

php - 数据库设计 : implementing several types of the same entity

php - Doctrine 合并 : DateTime field always updated

c++ - 尝试替换字符串数组的元素,但只能在该位置输入新字符串。 C++

PHP 复杂的基于角色的访问控制列表

php - Azure Stack API Rest 在 PHP 中使用 CURL 创建存储帐户

php - 最佳JavaScript编辑器和调试器

html - 动态显示 Twig 中的表格

symfony - 我应该将学说注册表或特定存储库、实体管理器传递到 symfony2 中的 DI 容器吗?

node.js - 为什么 Node.js 脚本控制台会在 Windows 8 中立即关闭?

c# - 如何等到控制台应用程序空闲?