1

我目前正在开发一个实现前端控制器模式的 MVC 应用程序。

这个过程是这样的:

  1. 收到请求
  2. 请求变成了一个 RequestObject
  3. RequestObject 被传递给调度程序
  4. Dispatcher 然后路由,然后调用所需的控制器。
  5. 控制器在 ResponseObject 中返回结果。
  6. Dispatcher 然后将 ResponseObject 返回到应用程序的“前端”。
  7. 然后回显输出。

有一种特殊情况(对于 ajax 和 flash 前端):

  1. 调度程序将看到请求被发送到“端点”控制器。
  2. 端点控制器然后将请求分派给实际请求的控制器,如上所述。
  3. 然后将 requestObject 返回到端点控制器。
  4. 端点控制器然后执行其 JSON 或 AMF 编码,这将被回显。
  5. 然后脚本以exit();结束。

我创建了一个ExceptionHandler类并使用set_exception_handler. 同时我创建了一个ErrorHandlerand using set_error_handler,所有错误都被转换并作为异常抛出。

所有这些都运作良好。ExceptionHandler然而,当我遇到这些异常之一时,我正在努力解决这个问题。在 中ExceptionHandler,ResponseObject 被修改以反映我们需要抛出 500 错误的事实。

我想以某种方式从 ResponseObject 返回,ExceptionHandler这样返回的 ResponseObject 可以被调度程序“捕获”,然后由“端点”控制器或“前端”控制器呈现或转换为 JSON 或 AMF 响应。

这可能吗?如果是这样,最好的方法是什么?

4

1 回答 1

0

这是不可能的。如http://php.net/set_exception_handler所述

调用 exception_handler 后将停止执行。

正确的方法是将try-catch块添加到调度程序,到调用控制器调度方法的地方。

于 2013-04-28T20:56:46.930 回答