【发布时间】:2017-06-13 06:38:53
【问题描述】:
我正在处理一个自定义 CLI 命令,我想知道从 PHP 代码调用其他命令的最佳方法是什么(没有 shell_exec() 或类似命令)。
例如:
当运行“php bin/magento my:custom:command”时,它会做的,最后会运行“php bin/magento cache:flush”。
有任何想法吗?
谢谢。
【问题讨论】:
我正在处理一个自定义 CLI 命令,我想知道从 PHP 代码调用其他命令的最佳方法是什么(没有 shell_exec() 或类似命令)。
例如:
当运行“php bin/magento my:custom:command”时,它会做的,最后会运行“php bin/magento cache:flush”。
有任何想法吗?
谢谢。
【问题讨论】:
Magento CLI 构建在 Symfony 控制台之上。您可以使用此组件加载并运行其他命令:
$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。虽然这对您来说不太可能是个问题,但请注意,文档表明这并不总是最好的主意:
大多数时候,从不在命令行上执行的代码中调用命令并不是一个好主意。主要原因是该命令的输出针对控制台进行了优化,并没有传递给其他命令。
【讨论】: