我目前正在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终于通过内置的方式解决了这个问题以处理交互式命令测试!