Каков правильный способ прекратить выполнение кода после отправки заголовков ответов, но без использования exit()
?Symfony2: принудительное прекращение выполнения кода после отправки Ответные заголовки
Я знаю, что сценарий ДОЛЖЕН возвращать ответ, но как я могу заставить его быть возвращенным извне контроллера, например, из службы?
Допустим, метод моего сервиса действительно возвращает ответ так:
return RedirectResponse($url)->send();
Но в другом месте он может возвращать и другие вещи. Так что я могу сделать, чтобы проверить, что это на самом деле вернуться:
$result = $myService->doSomething();
if ($result instanceof RedirectResponse) {
return $result;
}
То, что я хочу добиться того, чтобы избежать проверки типа результата в каждом месте, где я использую свою службу, но я хотел бы видеть возвращенный ответ в Profiler/logs (если я использую exit(), я не могу).
Есть ли способ заставить ядро завершить работу?
EDIT:
На самом деле услуга используется в случае перед любым контроллером, так что я хочу сделать перенаправление перед любым исполнением контроллера. Так может быть, способ пропустить выполнение контроллера?
Фактически служба используется в событии перед любым контроллером, поэтому я хочу сделать перенаправление перед любым выполнением контроллера. Я просто хотел сделать вопрос более общим. –
Обновлен вопрос. –
Хорошо, понял! На той же странице вы можете найти даже событие запроса. Это должно быть то, что вы ищете. http://symfony.com/doc/current/components/http_kernel/introduction.html#the-kernel-request-event –