如何调用一批 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
这样子命令都在一个位置(主命令)处理 - 并且可以轻松配置以进行更改。
我有一些复杂的命令,我将它们拆分为 "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
这样子命令都在一个位置(主命令)处理 - 并且可以轻松配置以进行更改。