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实现的功能是显示8条基色色带
Oct 09 PHP
paypal即时到账php实现代码
Nov 28 PHP
解析php中call_user_func_array的作用
Jun 07 PHP
php中HTTP_REFERER函数用法实例
Nov 21 PHP
PHP使用DirectoryIterator显示下拉文件列表的方法
Mar 13 PHP
php实现短信发送代码
Jul 05 PHP
php封装的数据库函数与用法示例【参考thinkPHP】
Nov 08 PHP
php使用 readfile() 函数设置文件大小大小的方法
Aug 11 PHP
php curl获取https页面内容,不直接输出返回结果的设置方法
Jan 15 PHP
PHP实现基于状态的责任链审批模式详解
May 31 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
Feb 16 PHP
PHP强制转化的形式整理
May 22 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/10/06 PHP
php 用checkbox一次性删除多条记录的方法
2010/02/23 PHP
利用php绘制饼状图的实现代码
2013/06/07 PHP
php实现文件下载功能的几个代码分享
2014/05/10 PHP
php魔术变量用法实例详解
2014/11/13 PHP
PHP数组和explode函数示例总结
2015/05/08 PHP
JavaScript使用cookie实现记住账号密码功能
2015/04/27 Javascript
JavaScript中利用jQuery绑定事件的几种方式小结
2016/03/06 Javascript
AngularJs  unit-testing(单元测试)详解
2016/09/02 Javascript
微信小程序 两种滑动方式(横向滑动,竖向滑动)详细及实例代码
2017/01/13 Javascript
Vuejs实现带样式的单文件组件新方法
2017/05/02 Javascript
Vue2.5 结合 Element UI 之 Table 和 Pagination 组件实现分页功能
2018/01/26 Javascript
jQuery模拟html下拉多选框的原生实现方法示例
2019/05/30 jQuery
RxJS的入门指引和初步应用
2019/06/15 Javascript
小程序如何自主实现拦截器的示例代码
2019/11/04 Javascript
[01:01:51]EG vs VG Supermajor小组赛B组 BO3 第二场 6.2
2018/06/03 DOTA
Python创建xml的方法
2015/03/10 Python
python制作最美应用的爬虫
2015/10/28 Python
Python搭建APNS苹果推送通知推送服务的相关模块使用指南
2016/06/02 Python
Python实现中文数字转换为阿拉伯数字的方法示例
2017/05/26 Python
Python采集猫眼两万条数据 对《无名之辈》影评进行分析
2018/12/05 Python
python面向对象法实现图书管理系统
2019/04/19 Python
TensorFlow实现批量归一化操作的示例
2020/04/22 Python
CSS Houdini实现动态波浪纹效果
2019/07/30 HTML / CSS
玩具反斗城美国官网:Toys"R"Us
2016/09/17 全球购物
运动鞋、足球鞋和慕尼黑球衣:Sport Münzinger
2019/08/26 全球购物
一套软件测试笔试题
2014/07/25 面试题
创伤外科专业推荐信范文
2013/11/19 职场文书
护理专业自我鉴定
2014/01/30 职场文书
玲玲的画教学反思
2014/02/04 职场文书
企业党员公开承诺书
2014/03/26 职场文书
教师党员公开承诺事项
2014/05/28 职场文书
国际语言毕业生求职信
2014/07/08 职场文书
作风建设剖析材料
2014/10/06 职场文书
中班上学期个人总结
2015/02/12 职场文书
python实现学生信息管理系统(面向对象)
2022/06/05 Python