当前位置: 首页 > 图文教程 > 网络编程 > PHP > Zend Framework 入门——错误处理

PHP
PHP memcache扩展的三种安装方法
PHP 判断常量,变量和函数是否存在
PHP session有效期问题
PHP 读取文件的正确方法
apache2.2.4+mysql5.0.77+php5.2.8安装精简
PHP 字符串编码截取函数(兼容utf-8和gb2312)
PHP 错误之引号中使用变量
php 购物车的例子
PHP 身份证号验证函数
php结合飞信 免费天气预报短信
PHP SQLite类
PHP 在线翻译函数代码
PHPMyAdmin 快速配置方法
PHP 编写的 25个游戏脚本
php 购物车实例(申精)
PHP获取当前文件所在目录 getcwd()函数
DISCUZ 论坛管理员密码忘记的解决方法
PHP 采集心得技巧
抓取YAHOO股票报价的类
PHP 模拟登陆MSN并获得用户信息

PHP 中的 Zend Framework 入门——错误处理


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-23   浏览: 109 ::
收藏到网摘: n/a

使用 Zend Framework 的 MVC 结构,如果不做特殊的处理,所有的异常都会被前端控制器捕获,并累积起来。

Zend Framework 提供了若干种方法来处理异常。这里介绍最简单的一种。

在第一部分《快速上手》中,我们已经有了一个很简单的错误处理机制,即通过 applicatoin/controllers/ErrorController.php 以及其中定义的 errorAction 方法来处理异常。不过,只是给出了一个很简陋的报错信息。现在,我们把它再完善一下,达到两个基本要求:

  1. 用户请求了不存在的控制器或动作(404 错误),在用户的浏览器中给出报错信息;
  2. 其他的系统错误,则在日志文件中记录下来。

1. 创建日志

创建一个与 application 平行的文件夹,命名为 logs。

编辑 html/index.php 文件,加入下面的代码:

注意: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 入门——页面布局