Как вернуть Ответ в середине службы через прослушиватель событий?
У меня есть ситуация, когда у меня есть два контроллера, один для интерфейса, другой для API.Оба они используют один и тот же сервис для обработки запроса.В этом сервисе в методе handle
у меня есть несколько мест, где я хочу вернуть ответ, прежде чем метод сделает весь код.Я имею в виду, что проверяю некоторые требования, проверяю некоторые вещи и т. Д. Поэтому в этих местах я могу отправить событие, которое будет обрабатывать создание ответа.Таким образом, API получает JSON Response, а Front-end будет отображать представление.Но как вернуть этот ответ?Я могу вернуть Ответ от события Контроллеру следующим образом:
//src/Manager/MyService.php
public function handle(EventDispatcherInterface $eventDispatcher, $input) {
//...
$eventDispatcher->dispatch('event.error', $event);
if (null !== $event->getResponse()) {
return $event->getResponse();
}
}
И Контроллер будет выглядеть так:
public function doSomething(MyService $service)
{
//...
return $service->handle($input);
}
Это выполнит работу.Но есть ли более быстрый способ?Есть ли возможность сделать что-то вроде этого:
$eventDispatcher->dispatch('event.error', $event);
, который сразу же вернет Response?