2017-06-13 79 views
2

我正在處理一個自定義的CLI命令&我想知道從PHP代碼(沒有shell_exec()或類似的)調用其他命令的最佳方式是什麼。
例如:
當運行「php bin/magento my:custom:command」時,它會執行這個操作&最後會運行「php bin/magento cache:flush」。

任何想法?

謝謝。Magento 2:如何從另一個CLI命令類運行CLI命令?

回答

3

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我不確定你的意思。它是命令行,所以默認情況下是非常安全的? –