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 相关文章推荐
smarty静态实验表明,网络上是错的~呵呵
Nov 25 PHP
PHP 翻页 实例代码
Aug 07 PHP
PHPThumb图片处理实例
May 03 PHP
PHP中调用SVN命令更新网站方法
Jan 07 PHP
PHP获取一年中每个星期的开始和结束日期的方法
Feb 12 PHP
codeigniter实现get分页的方法
Jul 10 PHP
在Mac OS的PHP环境下安装配置MemCache的全过程解析
Feb 15 PHP
PHP获取用户客户端真实IP的解决方案
Oct 10 PHP
php cli模式下获取参数的方法
May 05 PHP
php微信公众号开发之现金红包
Apr 16 PHP
Yii框架组件的事件机制原理与用法分析
Apr 07 PHP
让你的PHP,APACHE,NGINX支持大文件上传
Mar 09 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 截取字符串函数整理(支持gb2312和utf-8)
2010/02/16 PHP
编写安全 PHP应用程序的七个习惯深入分析
2013/06/08 PHP
php设置页面超时时间解决方法
2015/09/22 PHP
php有效防止图片盗用、盗链的两种方法
2016/11/01 PHP
PHP 配置后台登录以及模板引入
2017/01/24 PHP
浅谈PHP中类和对象的相关函数
2017/04/26 PHP
解决出现SoapFault (looks like we got no XML document)的问题
2017/06/24 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
JQuery 引发两次$(document.ready)事件
2010/01/15 Javascript
使用JavaScript链式编程实现模拟Jquery函数
2014/12/21 Javascript
javascript的日期对象、数组对象、二维数组使用说明
2014/12/22 Javascript
jquery 插件实现瀑布流图片展示实例
2015/04/03 Javascript
使用JavaScript刷新网页的方法
2015/06/04 Javascript
RequireJS简易绘图程序开发
2016/10/28 Javascript
详解Angular.js数据绑定时自动转义html标签及内容
2017/03/30 Javascript
JS实现静态页面搜索并高亮显示功能完整示例
2017/09/19 Javascript
详解plotly.js 绘图库入门使用教程
2018/02/23 Javascript
jquery 通过ajax请求获取后台数据显示在表格上的方法
2018/08/08 jQuery
Vue中android4.4不兼容问题的解决方法
2018/09/04 Javascript
React中阻止事件冒泡的问题详析
2019/04/12 Javascript
详解vue-property-decorator使用手册
2019/07/29 Javascript
vue 导航内容设置选中状态样式的例子
2019/11/01 Javascript
小程序中的箭头函数的具体使用
2020/06/19 Javascript
JS实现简单贪吃蛇小游戏
2020/10/28 Javascript
python切换hosts文件代码示例
2013/12/31 Python
编写Python小程序来统计测试脚本的关键字
2016/03/12 Python
mac系统安装Python3初体验
2018/01/02 Python
python中将一个全部为int的list 转化为str的list方法
2018/04/09 Python
Python使用Selenium爬取淘宝异步加载的数据方法
2018/12/17 Python
python按键按住不放持续响应的实例代码
2019/07/17 Python
python实现windows倒计时锁屏功能
2019/07/30 Python
Django数据库操作之save与update的使用
2020/04/01 Python
使用keras时input_shape的维度表示问题说明
2020/06/29 Python
Becextech新西兰:数码单反相机和手机在线商店
2018/04/27 全球购物
python基于tkinter制作下班倒计时工具
2021/04/28 Python
python编程实现清理微信重复缓存文件
2021/11/01 Python