如何调用一批Laravel5命令?

时间:2015-04-09 03:26:51

标签: laravel-5 bus

我有一些复杂的命令,我分成了"子命令" (以下示例)。由于我的站点是多域的,我需要能够自定义要执行的子命令的序列和组合(到目前为止,我在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'
];

应用\命名空间\ HTTP \控制器\ 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
}

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

1 个答案:

答案 0 :(得分:0)

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

所以从控制器调用一个名为HandlePaymentProcessCommand的主要命令。然后在该命令中调用子命令

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

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