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 相关文章推荐
轻松修复Discuz!数据库
May 03 PHP
php学习笔记 php中面向对象三大特性之一[封装性]的应用
Jun 13 PHP
使用php测试硬盘写入速度示例
Jan 27 PHP
PHP操作MySQL事务实例
Nov 05 PHP
通过修改配置真正解决php文件上传大小限制问题(nginx+php)
Sep 23 PHP
safari下载文件自动加了html后缀问题
Nov 09 PHP
PHP基于curl实现模拟微信浏览器打开微信链接的方法示例
Feb 15 PHP
Smarty模板语法详解
Jul 20 PHP
在Laravel 的 Blade 模版中实现定义变量
Oct 14 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
Feb 28 PHP
基于PHP实现发微博动态代码实例
Dec 11 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
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 面向对象之成员方法详解
2013/05/04 PHP
php操作xml入门之xml标签的属性分析
2015/01/23 PHP
PHP封装的HttpClient类用法实例
2015/06/17 PHP
jQuery ui 1.7更新小结
2009/08/15 Javascript
asp.net下使用jquery 的ajax+WebService+json 实现无刷新取后台值的实现代码
2010/09/19 Javascript
js和css写一个可以自动隐藏的悬浮框
2014/03/05 Javascript
javascript页面渲染速度测试脚本分享
2014/04/15 Javascript
js操作模态窗口及父子窗口间相互传值示例
2014/06/09 Javascript
jQuery插件zTree实现更新根节点中第i个节点名称的方法示例
2017/03/08 Javascript
详解Angular2中Input和Output用法及示例
2017/05/21 Javascript
Node.js中流(stream)的使用方法示例
2017/07/16 Javascript
JS实现基于Sketch.js模拟成群游动的蝌蚪运动动画效果【附demo源码下载】
2017/08/18 Javascript
Vue官网todoMVC示例代码
2018/01/29 Javascript
快速解决vue-cli在ie9+中无效的问题
2018/09/04 Javascript
深入理解 TypeScript Reflect Metadata
2019/12/12 Javascript
微信小程序仿抖音视频之整屏上下切换功能的实现代码
2020/05/24 Javascript
Vue + element 实现多选框组并保存已选id集合的示例代码
2020/06/03 Javascript
Python中的yield浅析
2014/06/16 Python
Pycharm学习教程(6) Pycharm作为Vim编辑器使用
2017/05/03 Python
基于Django用户认证系统详解
2018/02/21 Python
Python读写文件基础知识点
2019/06/10 Python
python tkinter 设置窗口大小不可缩放实例
2020/03/04 Python
基于打开pycharm有带图片md文件卡死问题的解决
2020/04/24 Python
Pycharm中如何关掉python console
2020/10/27 Python
html5生成柱状图(条形图)效果的实例代码
2016/03/25 HTML / CSS
基于MUI框架使用HTML5实现的二维码扫描功能
2018/03/01 HTML / CSS
工程技术员岗位职责
2014/03/02 职场文书
餐厅采购员岗位职责
2014/03/06 职场文书
电工技术比武方案
2014/05/11 职场文书
社会发展项目建议书
2014/08/25 职场文书
国际政治学专业推荐信
2014/09/26 职场文书
县政府班子个人对照检查材料
2014/10/05 职场文书
2014年客服工作总结与计划
2014/12/09 职场文书
django注册用邮箱发送验证码的实现
2021/04/18 Python
前端JavaScript大管家 package.json
2021/11/02 Javascript
MYSQL 表的全面总结
2021/11/11 MySQL