Laravel-从作业输出样式



我遇到了允许Laravel作业与控制台输出交互的问题。

目前,我正在将OutputStyle从命令传递给Job构造函数并分配它。

我已经看到了InteractsWithIO特性,但如果我自己使用它,而没有从命令中分配OutputStyle,那么它就会说它是null。

Call to a member function title() on null

我还尝试过使用从容器中设置$this->output

$this->output = resolve(OutputStyle::class);

失败

Target [SymfonyComponentConsoleInputInputInterface] is not instantiable while building [IlluminateConsoleOutputStyle].

我还遇到了贯穿此作业的PHPUnit测试的问题。类的输出显示在测试输出中。

.......................Processing element 1 for "Section"
.......

在同样适用于PHPUnit的Laravel中,处理向控制台输出的最佳方式是什么?

将以下代码放入服务提供商中是有效的:

$this->app->bind('console.output', function () {
return new OutputStyle(
new StringInput(''),
new StreamOutput(fopen('php://stdout', 'w'))
);
});

然后我可以说,在我的工作中,

$this->output = resolve('console.output');

它可以访问所有方法,如titlesectiontable

最新更新