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

PHP
PHP常用代码
小偷PHP+Html+缓存
PHP 常见郁闷问题答解
上传多个文件的PHP脚本
详解::如何将图片储存在数据库里
PHP生成静态页面详解
[PHP]模板引擎Smarty深入浅出介绍
PHP语法速查表
一些常用的php函数
让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X
PHP经典的给图片加水印程序
PHP 字符串操作入门教程
source.php查看源文件
main.php
Php部分常见问题总结
[PHP] 《PHP边学边教》(01.开篇:准备工作)
《PHP边学边教》(02.Apache+PHP环境配置:上篇)
《PHP边学边教》(02.Apache+PHP环境配置:下篇)
傻瓜化配置PHP环境:Appserv
《PHP边学边教》(04.编写简易的通讯录:视频教程1)

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 158 ::
收藏到网摘: 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 入门——页面布局