Magento 2:如何从另一个CLI命令类运行CLI命令?

问题描述:

我正在处理一个自定义的CLI命令&我想知道从PHP代码(没有shell_exec()或类似的)调用其他命令的最佳方式是什么。
例如:
当运行“php bin/magento my:custom:command”时,它会执行这个操作&最后会运行“php bin/magento cache:flush”。

任何想法?

谢谢。Magento 2:如何从另一个CLI命令类运行CLI命令?

Magento CLI构建在Symfony Console之上。您可以加载和运行与此组件其他命令,例如:

$arguments = new ArrayInput(['command' => 'my:custom:command']); 
$this->getApplication()->find('my:custom:command')->run($arguments, $output); 

$arguments = new ArrayInput(['command' => 'cache:flush']); 
$this->getApplication()->find('cache:flush')->run($arguments, $output); 

更多信息here。虽然它不可能成为你的问题,请注意,文件表明,这是不是最好的主意:

大部分的时间,从调用代码不能在命令行中执行的命令不一个好主意。主要原因是命令的输出已针对控制台进行了优化,而不是传递给其他命令。

+0

太棒了!谢谢:) – Pini

+0

@ThisGuyHasTwoThumbs我不确定你的意思。它是命令行,所以默认情况下是非常安全的? –