2017-06-13 12 views
2

私はカスタムCLIコマンドを扱っています& shell_exec()やそれ以外の方法でPHPコードから他のコマンドを呼び出すには、どうしたらよいでしょうか。
たとえば、
「php bin/magento cache:flush」を実行すると、最終的には&のものが実行されます。「php bin/magento my:custom:command」を実行すると、

すべてのアイデア?

ありがとうございました。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私はあなたが何を意味するか分かりません。それはコマンドラインなので、デフォルトではかなり安全ですか? –

関連する問題