如何调用一批 Laravel5 命令?

How do I call a batch of Laravel5 commands?

我有一些复杂的命令,我将它们拆分为 "sub commands"(以下示例)。由于我的站点是多域的,因此我需要能够自定义要执行的子命令的顺序和组合(到目前为止,我在 L4 下的配置中拥有此功能)。随着迁移到 L5,我正在使用命令总线重构此功能。

命令序列示例: 站点 A:

1) AuthorizeCharge
2) DoSomethingA
3) DoSomethingB
4) Charge

站点 B

 1) AuthorizeCharge
 2) DoSomethingA
 3) DoSomethingC
 4) DoSomethingD
 5) Charge

这些行项目中的每一个都是一个带有处理程序的命令。这部分对我来说相当清楚(并且工作正常)。

如何在我的控制器中优雅地发送它?

这是我已经尝试过的。

固定版本(有效)(在控制器中):

$return = $this->dispatch( new DoSomethingACommand($form));
$return[] = $this->dispatch( new DoSomethingBCommand($form));

可变版本(伪代码):

someconfig.php

return [
   'DoSomethingACommand',
   'DoSomethingBCommand'
];

App\Namespace\Http\Controller\SomeController.php

...

//loop over all scenario commands
for ($j = 0; $j < count($commands); $j++) 
{
    //make the object which we need to act on
    $object = \App::make( $this->_namespace . '\'. $commands[ $j ] );

    $return[] = $this->dispatchFrom( $object,  $form ); //Doesnt work
}

我对如何解决这个问题有点困惑。关于如何实现这个的任何建议?

你为什么不只有一个主命令然后调用所有其他子命令本身?

因此,从您的控制器中调用一个名为 HandlePaymentProcessCommand 的主要命令。然后在该命令中调用子命令

 1) AuthorizeCharge
 2) DoSomethingA
 3) DoSomethingC
 4) DoSomethingD
 5) Charge

这样子命令都在一个位置(主命令)处理 - 并且可以轻松配置以进行更改。