本文实例讲述了php实现的错误处理封装类。分享给大家供大家参考,具体如下:
1、创建MyErrorHandler.php文件
代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
<?php
class MyErrorHandler {
public $message ;
public $filename ;
public $line ;
public $vars = array ();
protected $_noticeLog = 'F: oot oticeLog.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、测试代码
1
2
3
4
5
6
7
8
9
10
|
<?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程序设计有所帮助。