国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

Zend Framework 入門――錯誤處理

2024-05-04 21:51:51
字體:
來源:轉載
供稿:網友

使用 Zend Framework 的 MVC 結構,如果不做特殊的處理,所有的異常都會被前端控制器捕獲,并累積起來。

Zend Framework 提供了若干種方法來處理異常。這里介紹最簡單的一種。

在第一部分《快速上手》中,我們已經有了一個很簡單的錯誤處理機制,即通過 applicatoin/controllers/ErrorController.php 以及其中定義的 errorAction 方法來處理異常。不過,只是給出了一個很簡陋的報錯信息。現在,我們把它再完善一下,達到兩個基本要求:

  1. 用戶請求了不存在的控制器或動作(404 錯誤),在用戶的瀏覽器中給出報錯信息;
  2. 其他的系統錯誤,則在日志文件中記錄下來。

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()
{
$log = Zend_Registry::get('error_log');
$content = null;
$errors = $this->_getParam ('error_handler') ;
switch ($errors->type) {
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER :
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION :
// 404 error -- controller or action not found
$this->getResponse ()->setRawHeader ( 'HTTP/1.1 404 Not Found' ) ;
// ... get some output to display...
$content = "error_page_not_found"$$
break ;
default :
// application error; display error page, but don't change
// status code
$content = "error_unexpected"$$
// ...

// Log the exception
$exception = $errors->exception;

$log->debug($exception->getMessage() .
PHP_EOL . $exception->getTraceAsString());
break ;
}

// Clear previous content
$this->getResponse()->clearBody();
$this->view->content = $content;
}

在 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 入門——頁面布局

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新巴尔虎右旗| 海晏县| 教育| 台北县| 融水| 应用必备| 唐河县| 商河县| 景德镇市| 高邑县| 油尖旺区| 东兴市| 潞城市| 嘉禾县| 奇台县| 西乌| 望江县| 农安县| 海林市| 杭锦后旗| 云和县| 元江| 垫江县| 建平县| 阿克苏市| 台山市| 尼勒克县| 启东市| 四会市| 秦安县| 抚远县| 读书| 额尔古纳市| 吉木萨尔县| 军事| 崇文区| 开鲁县| 五大连池市| 武定县| 西充县| 和硕县|