【问题标题】:Magento 2: How to run CLI command from another CLI command class?Magento 2:如何从另一个 CLI 命令类运行 CLI 命令?
【发布时间】:2017-06-13 06:38:53
【问题描述】:

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

有任何想法吗?

谢谢。

【问题讨论】:

    标签: php magento magento2


    【解决方案1】:

    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。虽然这对您来说不太可能是个问题,但请注意,文档表明这并不总是最好的主意:

    大多数时候,从不在命令行上执行的代码中调用命令并不是一个好主意。主要原因是该命令的输出针对控制台进行了优化,并没有传递给其他命令。

    【讨论】:

    • 太棒了!谢谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 2020-02-28
    • 2021-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多