从控制器调用命令时如何使用控制台日志

时间:2013-12-16 09:08:46

标签: symfony

根据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中使用控制台日志?

1 个答案:

答案 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方法将数据发送回控制器,但第一个解决方案听起来更有趣。