根据thread
我让代码从控制器调用命令
use Symfony\Component\Console\Input\ArgvInput;
use Symfony\Component\Console\Output\ConsoleOutput;
.
.
public function myAction() {
$command = $this->get('MyCommandService');
$input = new ArgvInput(array('arg1'=> 'value'));
$output = new ConsoleOutput();
$command->run($input, $output);
}
我可以获得$ output,
我想在Controller中使用控制台输出
所以,我检查了console output class方法。
我猜getStream()是有用的,所以我试试这个
$output->getStream()
但它只是返回流,
如何在Controller中使用控制台日志?
答案 0 :(得分:0)
如果您熟悉自定义流,则可以创建自己的流: php.net/stream_wrapper_register
ConsoleOutput
扩展StreamOutput
扩展Output
实现OutputInterface
。
Command
要求后者作为输出参数。
StreamOutput
需要一个流作为其第一个参数,您在此处添加自己的流。运行命令并从流中读取。
http://api.symfony.com/2.0/Symfony/Component/Console/Output/StreamOutput.html
一个更简单的解决方案可能是扩展Output
类并实现doWrite
方法将数据发送回控制器,但第一个解决方案听起来更有趣。