我有一些复杂的命令,我分成了"子命令" (以下示例)。由于我的站点是多域的,我需要能够自定义要执行的子命令的序列和组合(到目前为止,我在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
}
我有点坚持如何解决这个问题。关于如何实现这个的任何建议?
答案 0 :(得分:0)
为什么你不只是有一个主命令然后调用所有其他子命令?
所以从控制器调用一个名为HandlePaymentProcessCommand
的主要命令。然后在该命令中调用子命令
1) AuthorizeCharge
2) DoSomethingA
3) DoSomethingC
4) DoSomethingD
5) Charge
这样子命令全部在一个位置(主命令)处理 - 并且可以轻松配置以进行更改。