php实现的错误处理封装类实例


Posted in PHP onJune 20, 2017

本文实例讲述了php实现的错误处理封装类。分享给大家供大家参考,具体如下:

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函数,可以参考前文《PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法》。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
最令PHP初学者们头痛的十四个问题
Jan 15 PHP
php字符串过滤与替换小结
Jan 26 PHP
php通过array_push()函数添加多个变量到数组末尾的方法
Mar 18 PHP
PHP SPL标准库之数据结构栈(SplStack)介绍
May 12 PHP
分享php邮件管理器源码
Jan 06 PHP
php使用ftp远程上传文件类(完美解决主从文件同步问题的方法)
Sep 23 PHP
Yii2-GridView 中让关联字段带搜索和排序功能示例
Jan 21 PHP
Thinkphp结合ajaxFileUpload实现异步图片传输示例
Mar 13 PHP
php使用imagecopymerge()函数创建半透明水印
Jan 25 PHP
PHP后台备份MySQL数据库的源码实例
Mar 18 PHP
Yii框架参数配置文件params用法实例分析
Sep 11 PHP
gearman中任务的优先级和返回状态实例分析
Feb 27 PHP
PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法
Jun 20 #PHP
php实现的双色球算法示例
Jun 20 #PHP
php实现的二分查找算法示例
Jun 20 #PHP
创建无限极分类树型结构的简单方法
Jun 20 #PHP
PHP实现的简单排列组合算法应用示例
Jun 20 #PHP
php提交表单时保留多个空格及换行的文本样式的方法
Jun 20 #PHP
PHP中模糊查询并关联三个select框
Jun 19 #PHP
You might like
php 动态添加记录
2009/03/10 PHP
php gzip压缩输出的实现方法
2013/04/27 PHP
php不用正则验证真假身份证
2013/11/06 PHP
PHP资源管理框架Assetic简介
2014/06/12 PHP
php实现事件监听与触发的方法
2014/11/21 PHP
php获得文件大小和文件创建时间的方法
2015/03/13 PHP
学习php设计模式 php实现合成模式(composite)
2015/12/08 PHP
JavaScript 入门基础知识 想学习js的朋友可以参考下
2009/12/26 Javascript
Javascript 判断是否存在函数的方法
2013/01/03 Javascript
window.requestAnimationFrame是什么意思,怎么用
2013/01/13 Javascript
jquery实现可拖动DIV自定义保存到数据的实例
2013/11/20 Javascript
使用jQueryMobile实现滑动翻页效果的方法
2015/02/04 Javascript
基于jquery实现二级联动效果
2017/03/30 jQuery
js实现京东秒杀倒计时功能
2019/01/21 Javascript
React优化子组件render的使用
2019/05/12 Javascript
vue+Element实现搜索关键字高亮功能
2019/05/28 Javascript
vue组件创建的三种方式小结
2020/02/03 Javascript
跟老齐学Python之玩转字符串(2)
2014/09/14 Python
Python获取指定字符前面的所有字符方法
2018/05/02 Python
Python实现的NN神经网络算法完整示例
2018/06/19 Python
Python之数据序列化(json、pickle、shelve)详解
2019/08/30 Python
Python timer定时器两种常用方法解析
2020/01/20 Python
Python QTimer实现多线程及QSS应用过程解析
2020/07/11 Python
美国新蛋IT数码商城:Newegg.com
2016/07/21 全球购物
英国第一的市场和亚马逊替代品:OnBuy
2019/03/16 全球购物
美国球迷装备的第一来源:FOCO
2020/07/03 全球购物
介绍一下JNDI的基本概念
2013/07/26 面试题
家长会学生家长演讲稿
2013/12/29 职场文书
小学生安全保证书
2014/02/01 职场文书
《雨霖铃》听课反思
2014/02/13 职场文书
党支部对照检查材料
2014/08/25 职场文书
承诺书模板
2014/08/30 职场文书
教师工作证明范本
2015/06/12 职场文书
工作态度怎么写
2015/06/25 职场文书
2016优秀青年志愿者事迹材料
2016/02/25 职场文书
五年级作文之想象作文
2019/10/30 职场文书