程序调用 Artisan,可以返回执行结果吗?
有个小需求想通过执行 Artisan 命令,返回执行结果,以下是我的测试过程,但都没成功
Artisan:call()
根据文档使用 Artisan:call()
,这个方法只会返回退出码,得不到结果
Process
使用 \Symfony\Component\Process\Process
,此方法貌似不支持 Artisan
命令?
$process = new \Symfony\Component\Process\Process(['route:list']);
// $process = new \Symfony\Component\Process\Process(['php artisan route:list']);
$process->run();
if (! $process->isSuccessful()) {
return $process->getErrorOutput();
}
return $process->getOutput();
执行结果:
sh: 1: exec: route:list: not found
sh: 1: exec: php artisan route:list: not found
不知道大家还有没有其他方法,说说呗
目前有种方法
\Artisan:output();
但是只能返回图形界面,比如带边框表格,想要的是类似数据结构的那种,比如数组或者集合
高认可度评论:
返回执行结果是指什么,错误信息?如果是错误信息可以直接抛出异常进行处理。 如果是其他的用途最好详细说明一下
@Epona 比如执行
route:list
,期望返回的是包含路由列表的数组或者集合@Kevinvinvin 这个应该是行不通的。 route:list 返回的也是一堆字符串。 无法返回数组或者集合