У меня есть несколько сложных команд, которые я разделил на «вспомогательные команды» (пример ниже). Поскольку мой сайт является многодоменным, мне нужна возможность настройки последовательности и состава вспомогательных команд для выполнения (до сих пор это было в конфигурации под L4). С переходом на L5 я реорганизую эту функцию с помощью командной шины.Как я могу назвать партию команд Laravel5?
Пример последовательности команд: сайт 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 \ Пространство имен \ 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/домен», в то время как мне пришлось бы создать еще один HandlePaymentProcessCommand для «Site 2/Domain», поскольку содержимое или подкоманды будут несколько иначе. – Literallyafloat
Просто у вас есть одна конкретная команда для каждого сайта на контроллере. Затем эта команда вызывает определенные подкоманды. – Laurence
Хорошо, спасибо - это предложение работает для меня! В любом случае у меня есть конкретный пакет «сайт/домен» с конкретными функциями клиента и представлениями/активами, поэтому я создал основную команду в пакете бренда и называет отдельные «подкоманды» из основного пакета. – Literallyafloat