首页 > Web开发 > 详细

php错误封装类

时间:2015-06-03 19:12:50      阅读:276      评论:0      收藏:0      [点我收藏+]

1、创建MyErrorHandler.php文件

代码如下:

<?php
class MyErrorHandler {
    public $message;
    public $filename;
    public $line;
    public $vars = array();
    protected $_noticeLog = ‘F:\root\noticeLog.log‘;

    public function __construct ($message,$filename,$line,$vars) {
        $this->message = $message;
        $this->filename = $filename;
        $this->line = $line;
        $this->vars = $vars;
    }

    public static function deal ($errno,$errmsg,$filename,$line,$vars) {
        $self = new self($errno,$errmsg,$filename,$line,$vars);

        switch ($errno) {
            case E_USER_ERROR:
                return $self->dealError();
                break;
            case E_USER_WARNING:
            case E_WARNING:
                return $self->dealWarning();
                break;
            case E_NOTICE:
            case E_USER_NOTICE:
                return $self->dealNotice();
            default:
                return false;
        }
    }
    
    /**
    * 致命的错误
    */
    public function dealError() {
        ob_start();
        debug_print_backtrace();
        $backtrace = ob_get_flush();
        $errorMsg = <<<EOF
出现了致命的错误,如下:
产生错误的文件:{$this->filename}
产生错误的信息:{$this->message}
产生错误的行号:{$this->line}
追踪信息{$backtrace}
EOF;
        error_log($errorMsg,1,‘279921301@qq.com‘,‘From:php[error错误日志]‘);
        exit(1);
    }

    /**
    * 警告的错误
    */
    public function dealWarning() {
        $errorMsg = <<<EOF
出现了警告的错误,如下:
产生警告的文件:{$this->filename}
产生警告的信息:{$this->message}
产生警告的行号:{$this->line}
EOF;
        return error_log($errorMsg,1,‘279921301@qq.com‘,‘From:php[error警告日志]‘);
    }

    /**
    * 通知的错误
    */
    public function dealNotice() {
        $datetime = date(‘Y-m-d H:i:s‘);
        $errorMsg = <<<EOF
出现了通知的错误,如下:
产生通知的文件:{$this->filename}
产生通知的信息:{$this->message}
产生通知的行号:{$this->line}
产生通知的时间:{$datetime}
EOF;
        return error_log($errorMsg,3,$this->_noticeLog);
    }
}

2、测试代码

<?php
include "MyErrorHandler.php";

//报告所有 PHP 错误
error_reporting(-1);

//不显示错误信息
ini_set(‘display_errors‘,0);
set_error_handler(array(‘MyErrorHandler‘,‘deal‘));

echo $test; //Notice错误
settype($var,‘test‘);  //警告错误
test();

注意:发送邮件需要在本地配置mail函数,可以参考本人的上一篇文章如何配置mail函数发邮件。

php错误封装类

原文:http://www.cnblogs.com/gide/p/4549785.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!