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

PHP
dedecms模版制作使用方法
dede3.1分页文字采集过滤规则详说(图文教程)
dede3.1分页文字采集过滤规则详说(图文教程)续二
dede3.1分页文字采集过滤规则详说(图文教程)续四
手把手教你使用DedeCms V3的在线采集图文教程
PHP实现MVC开发得最简单的方法:模型
php下用GD生成生成缩略图的两个选择和区别
Win2003服务器安全加固设置--进一步提高服务器安全性
[php] 我的微型论坛的简单教程[已完成]
phpMyAdmin下载、安装和使用入门教程
PHP 优化配置:加速你的VBB,phpwind,Discuz,IPB,MolyX
php+mysql开源XNA 聚合程序发布 下载
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
MySQL数据库转移,access,sql server 转 MySQL 的图文教程
小结下MySQL中文乱码,phpmyadmin乱码,php乱码 产生原因及其解决方法
首页四格,首页五格For6.0(GBK)(UTF-8)[12种组合][9-18][版主安装测试通过]
[PHP]经常用到的实用函数集合
php扩展ZF:Validate扩展
php开发工具之vs2005图解
PHP 5.0创建图形的实用方法完整篇

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


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