【发布时间】:2011-12-15 05:02:34
【问题描述】:
我目前正在开发一个实现前端控制器模式的 MVC 应用程序。
流程如下:
- 请求已收到
- request 变成了 RequestObject
- RequestObject 被传递给调度程序
- 调度程序然后路由,然后调用所需的控制器。
- 控制器在 ResponseObject 中返回结果。
- Dispatcher 然后将 ResponseObject 返回到应用程序的“前端”。
- 然后回显输出。
有一种特殊情况(对于 ajax 和 flash 前端):
- 调度程序将看到请求已发送到“端点”控制器。
- 然后端点控制器将请求分派给实际请求的控制器,如上所述。
- 然后将 requestObject 返回到端点控制器。
- 端点控制器然后执行其 JSON 或 AMF 编码,这将被回显。
- 脚本随后以
exit()终止;
我创建了一个ExceptionHandler 类并用set_exception_handler 注册了它。同时我创建了一个ErrorHandler 并使用set_error_handler,然后将所有错误转换并作为异常抛出。
所有这些都运行良好。然而,当ExceptionHandler 捕获这些异常之一时,我正在努力解决这个问题。在ExceptionHandler 中,ResponseObject 被修改以反映我们需要抛出 500 错误这一事实。
我想以某种方式从ExceptionHandler 返回 ResponseObject,以便返回的 ResponseObject 可以被调度程序“捕获”,然后由“端点”控制器或“前端”呈现或转换为 JSON 或 AMF 响应控制器。
这可能吗?如果是这样,最好的方法是什么?
【问题讨论】:
标签: php model-view-controller exception-handling front-controller