我目前正在研究實現前端控制器模式的MVC應用程序。使用set_exception_handler處理應用程序中的錯誤
的過程是這樣的:當接收
- 要求
- 請求被變成了RequestObject
- RequestObject傳遞給調度員
- 調度隨後的路線,然後調用所需的控制器。
- 控制器將結果返回給ResponseObject。
- 然後分派器將ResponseObject返回給應用程序的「Front」。
- 輸出被回顯出來。
有一個特殊的情況下(AJAX和閃光前端):
- 調度器將看到該請求被髮送到「端點」控制器。
- 端點控制器然後如上所述將請求分派給實際請求的控制器。
- requestObject然後返回給端點控制器。
- 終端控制器然後執行其JSON或AMF編碼,這是回聲。
- 該腳本隨後終止於
exit()
;
我創建了一個ExceptionHandler
班,並使用set_exception_handler
進行了註冊。同時我創建了一個ErrorHandler
並使用set_error_handler
,然後轉換所有錯誤並將其作爲例外拋出。
所有這一切都很好。然而,當我遇到這個問題時,ExceptionHandler
就會遇到這些例外之一。在ExceptionHandler
中,ResponseObject被修改以反映我們需要拋出500錯誤的事實。
我想以某種方式從ExceptionHandler
返回ResponseObject,以便返回的ResponseObject可以被調度程序「捕獲」,然後通過「端點」控制器或「前」控制器呈現或轉換爲JSON或AMF響應。
這可能嗎?如果是這樣,那麼做到這一點的最好方法是什麼?