Я читал о командной шине, которую часто использовали в нескольких проектах, это здорово. Я продолжаю читать, хотя команда не должна ничего возвращать контроллеру; однако, есть определенные моменты, когда я чувствую, что должен обязательно вернуть значение, например:
$product = $this->dispatch(AddProductCommand::class);
return redirect()->route('route', $attributes = ['product_slug' => $product->slug]);
Мне нужно захватить кусок нового продукта, потому что для перенаправления маршрут нужен кусок. Является ли это плохой практикой, и если да, то что будет чище?
Невозможно реализовать его в полностью асинхронном стиле, так как вы используете веб-фреймворк, который является синхронным по дизайну.
Если вы используете инфраструктуру, которая допускает асинхронные запросы или (что еще лучше), вы отделили проблемы пользовательского интерфейса (например, перенаправление) от бэкэнда, вы можете подписаться на событие ProductAdded с помощью обратного вызова, который запускает перенаправление.
Других решений пока нет …