使用 Zend Framework 的 MVC 結構,如果不做特殊的處理,所有的異常都會被前端控制器捕獲,并累積起來。
Zend Framework 提供了若干種方法來處理異常。這里介紹最簡單的一種。
在第一部分《快速上手》中,我們已經有了一個很簡單的錯誤處理機制,即通過 applicatoin/controllers/ErrorController.php 以及其中定義的 errorAction 方法來處理異常。不過,只是給出了一個很簡陋的報錯信息。現在,我們把它再完善一下,達到兩個基本要求:
1. 創建日志
創建一個與 application 平行的文件夾,命名為 logs。
編輯 html/index.php 文件,加入下面的代碼:
| require_once 'Zend/Log.php'; require_once 'Zend/Log/Writer/Stream.php'; $log = new Zend_Log(new Zend_Log_Writer_Stream($rootPath . '/logs/errors.log', 'a ')); Zend_Registry::set('error_log', $log); |
注意:Web 服務器應具有對 logs 文件夾的讀寫權限。
2. 完善錯誤處理代碼
編輯 application/controllers/ErrorController.php 文件,新的 errrorAction 方法為:
| public function errorAction() |
在 languages/zh_cn.php 中加入錯誤信息的中文條目(如果你不需要支持多國語言,那么可以忽略這些):
| 'error_page_not_found' => "<h1>404 錯誤:頁面不存在!</h1>" . PHP_EOL . '<p>對不起,您所要求的頁面不存在。</p>', 'error_unexpected' => '<h1>錯誤!</h1>' . PHP_EOL . '<p>對不起,系統無法響應您的請求。請稍后再試。</p>', |
最后,略微修改一下 application/views/error/error.phtml 文件:
其中的錯誤顯示代碼為:
| <?php echo $this->translate($this->content); ?> |
注意:如果你需要記錄所有的異常和錯誤,包括各種警告,可以參考這里。
相關文章
Zend Framework 入門——快速上手
Zend Framework 入門——多國語言支持
Zend Framework 入門——錯誤處理
Zend Framework 入門——頁面布局
新聞熱點
疑難解答