php – 如何通过交互调用artisan控制台命令

我目前正在Laravel 5.1项目中创建一个php artisan控制台命令,并希望从我的控制台命令调用另一个控制台命令.我要调用的第三方命令不接受任何选项或参数,而是通过交互式问题接收其输入.

我知道我可以使用这样的选项和参数调用命令:

$this->call(‘command:name’, [‘argument’ => ‘foo’, ‘–option’ => ‘bar’]);

我也知道我可以从命令行调用交互式命令而不进行这样的交互:

php artisan command:name –no-interaction

但是我如何从命令中回答这些互动问题呢?

我想做类似下面的事情(伪代码).

$this->call('command:name', [
    'argument' => 'foo', 
    '--option' => 'bar'
], function($console) {
    $console->writeln('Yes'); //answer an interactive question 
    $console-writeln('No'); //answer an interactive question 
    $console->writeln(''); //skip answering an interactive question 
} );

当然上面的方法不起作用,因为$this-> call($command,$arguments)不接受第三个回调参数.

从控制台命令调用控制台命令时,如何回答交互式问题?

解决方法:

Laravel 5.7终于通过内置的方式解决了这个问题以处理交互式命令测试!

Laravel 5.7 Artisan Console

上一篇:Laravel php工匠迁移不起作用


下一篇:从php函数运行artisan命令