<?php
class myErrorHandler {
public $message='';
public $filename='';
public $line=0;
public $vars=array();
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($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_USER_NOTICE:
case E_NOTICE:
return $self->dealNotice();
break;
default:
return false;
}
}
/**
* 产生致命错误
*/
public function dealError(){
//开启内存缓存
ob_start();
debug_print_backtrace();
//获取内存中的信息
$backtrace = ob_get_flush();
$errorMsg = "
出现了致命的错误,如下:
产生的错误文件:{$this->filename}<br />
产生错误的信息:{$this->message}<br />
禅僧错误的行号:{$this->line}<br />
追踪信息:{$backtrace}<br />
==================================
";
//发送邮件
error_log($errorMsg, 3, 'D:\noitice\noticeLog.log');
exit(1);
}
/**
* 错误警告
* @return bool
*/
public function dealWarning(){
$errorMsg = "
出现了警告的错误,如下:
产生的错误文件:{$this->filename}<br />
产生错误的信息:{$this->message}<br />
错误警告的行号:{$this->filename}:{$this->line}<br />
==================================
";
//发送邮件
return error_log($errorMsg, 3, 'D:\noitice\noticeLog.log');
}
/**
* 定义通知级别的错误
* @return bool
*/
public function dealNotice(){
$datetime = date('Y-m-d H:i:s', time());
$errorMsg = "
出现了通知的错误,如下:
产生的错误文件:{$this->filename}<br />
产生错误的信息:{$this->message}<br />
禅僧错误的行号:{$this->filename}:{$this->line}<br />
通知时间:{$datetime}
==================================
";
//发送邮件
return error_log($errorMsg, 3, 'D:\noitice\noticeLog.log');
}
}