本文实例讲述了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程序设计有所帮助。