laravel - Laravel - 来自工作的输出样式
问题描述
我遇到了允许 Laravel 作业与控制台输出交互的问题。
目前,我将 OutputStyle 从 Command 传递给 Job 构造函数并分配它。
我已经看到了 InteractsWithIO 特征,但是如果我在没有从命令中分配 OutputStyle 的情况下单独使用它,那么它会说它为空。
Call to a member function title() on null
我也尝试过从$this->output
容器中使用
$this->output = resolve(OutputStyle::class);
这失败了
Target [Symfony\Component\Console\Input\InputInterface] is not instantiable while building [Illuminate\Console\OutputStyle].
我还遇到了通过这项工作运行的 PHPUnit 测试的问题。类的输出显示在测试输出中。
.......................Processing element 1 for "Section"
.......
在 Laravel 中处理输出到控制台的最佳方法是什么,也适用于 PHPUnit?
解决方案
将以下代码放入服务提供者中有效:
$this->app->bind('console.output', function () {
return new OutputStyle(
new StringInput(''),
new StreamOutput(fopen('php://stdout', 'w'))
);
});
然后我可以说,在我的工作中,
$this->output = resolve('console.output');
它可以访问所有方法,例如title
,section
和table
.
推荐阅读
- go - 发出 http 请求后从响应头中获取 CSRF Token
- terraform - Terraform:使用变量创建多个指标过滤器和警报
- c# - 如何让我的文本框显示这个值?
- python - Discord Python bot不发送消息
- asp.net-core-3.1 - 如何在 Devart dotConnect for Orcale 中禁用缓存 - .netCore 3.1
- ios - SwiftUI:具有计算属性的 ObservableObject
- node.js - Heroku 上的 Babel 转译保留关键字“包”错误
- javascript - 如何替换嵌入式 svg 中的图像?
- django - Django 3.0.8 Field.disable UpdateView
- proxy - 自动代理http流量授权脚本