php - Laravel,从调用方法中获取返回值
问题描述
我正在为 laravel 编写一些自定义命令,我需要从另一个调用的命令中获取返回值,例如:
class One extends Illuminate\Console\Command
{
protected $signature = 'cmd:one';
public function handle()
{
// call 'Two' and uses the api information to continue
$returnedValue = $this->call('cmd:two');
dd($returnedValue) // int(1) ?? it seems to show exit code
}
}
class Two extends Illuminate\Console\Command
{
protected $signature = 'cmd:two';
public function handle()
{
// this command retrieves some api information needed to continue
return $infoFromAPI;
}
}
我还尝试以相同的结果静态调用 Artisan::call(...) 。
我知道有一个 $output 属性,但文档不清楚如何使用它。
解决方案
从handle
finally 返回的信息到这一行:
return is_numeric($statusCode) ? (int) $statusCode : 0;
因此,如果在命令中Two
返回2
,则结果$returnedValue
将为 2,但如果返回数组或“测试”字符串,则结果将为 0。
所以事实上你不能这样做。命令的结果必须是数字,因此您不能返回例如数组并在另一个命令中重用它。事实上,我认为运行另一个命令没有多大意义。您应该创建将调用端点并返回结果的服务,如果您需要这 2 个命令,那么您可以在 2 个命令中调用此服务并获取结果,或者如果您不能这样做,您应该从某个存储(数据库/缓存),然后在命令中使用此存储的结果One
推荐阅读
- python-3.x - Python Pandas sum() 两个值之间的差异
- java - 当多个超类型上存在覆盖的方法时,Spring如何处理注释?
- asp.net - ASP.NET 隐式本地化未针对用户控件触发
- azure - GitHub 自托管运行器可以访问单独虚拟网络后面的 Azure 资源
- hp-alm - HPALM - 导出项目列表内容
- google-sheets - 移动单元格时谷歌表保护失败
- c++ - 在 C++ 中创建数独求解器时打印错误
- java - 如何从超类 Set 中过滤子类对象并将它们添加到子类 List
- python - 计算机与函数发生器之间的 TCPIP 通信错误
- javascript - 为什么我无法安装 socket.io