В настоящее время я работаю над приложением MVC, которое реализует шаблон фронт-контроллера.
Процесс работает следующим образом:
- запрос получен
- запроспревращается в RequestObject
- RequestObject передается диспетчеру
- Dispatcher, затем маршрутизирует и затем вызывает требуемый контроллер.
- Контроллер возвращает результаты в ResponseObject.
- Затем Dispatcher возвращает объект ResponseObject в «Front» приложения.
- Затем выводится вывод.
Существует особый случай (для интерфейсов ajax и flash).):
- Диспетчер увидит, что запрос отправлен контроллеру "конечной точки".
- Затем контроллер конечной точки отправляет запрос фактическому запрашиваемому контроллеру, как указано выше.
- Затем requestObject возвращается в контроллер конечной точки.
- Затем контроллер конечной точки выполняет кодировку JSON или AMF, и это отражается.
- Затем скрипт завершается с
exit()
;
Я создал класс ExceptionHandler
и зарегистрировал его с set_exception_handler
.В то же время я создал ErrorHandler
и, используя set_error_handler
, все ошибки затем преобразуются и генерируются как исключения.
Все это работает хорошо.Однако я борюсь с проблемой, когда ExceptionHandler
ловит одно из этих исключений.В ExceptionHandler
объект ResponseObject изменен, чтобы отразить тот факт, что нам нужно выдать ошибку 500.
Я хотел бы каким-то образом вернуть объект ResponseObject из ExceptionHandler
, чтобы возвращаемый объект ResponseObject можно было «перехватить»"диспетчером и затем преобразован или преобразован в ответ JSON или AMF контроллером" конечной точки "или" фронтальным "контроллером.
Возможно ли это?Если это так, каков наилучший способ сделать это?