$Id: 0Intro_Error.txt 174 2011-03-15 04:51:10Z [email protected] $
<?php
/*
Inter_Error类(Error.php)文件å¯å•独使用。PHPç‰ˆæœ¬è¦æ±‚:>=5.0.0。
低于æ¤php版本的å¯ä½¿ç”¨Inter_Error_PHP4.php文件
*/
//使用方法(代ç 示例):
date_default_timezone_set('PRC'); //设置时区,PRC内容请替æ¢ä¸ºåˆé€‚的时区,详细的请自查php手册。PHP版本 >= 5.1.0的时候一定è¦åšè¿™æ¥éª¤ï¼Œå¦åˆ™å¾ˆå¯èƒ½ä¼šå¯¼è‡´è®°å½•æ—¶é—´ä¸å‡†ï¼ˆé™¤éžåœ¨å¼•用å‰å·²ç»è®¾ç½®æ—¶åŒºï¼‰ï¼›ç‰ˆæœ¬ < 5.1.0则ä¸éœ€è¦ã€‚
require_once("Error.php"); //在适当的地方以require / require_onceæ£ç¡®å¼•用该文件
//ç„¶åŽæŽ¥ç®¡PHPçš„é”™è¯¯å¤„ç†æœºåˆ¶
set_exception_handler(array('Inter_Error', 'exception_handler'));
set_error_handler(array('Inter_Error', 'error_handler'), E_ALL);
if(version_compare(PHP_VERSION, '5.2', '>=')){
register_shutdown_function(array('Inter_Error', 'detect_fatal_error'));
}
//ç„¶åŽå¯é€‰æ‹©åœ°ä½¿ç”¨å¦‚下方å¼è¿›è¡Œè®¾ç½®ï¼ˆå‡å¦‚ä¿æŒé»˜è®¤å€¼ï¼Œå¯ä»¥ä¸éœ€é…置。默认值请查看Error.php里é¢å…³äºŽé™æ€å±žæ€§$debugMode的说明):
Inter_Error::$conf['debugMode'] = true;
//Inter_Error::$conf['friendlyExceptionPage']='1234.htm';
//Inter_Error::$conf['logType'] = 'simple';
//Inter_Error::$conf['logDir'] = dirname(__FILE__).'/Log';
//针对国内通用程åºé¢å‘è¿‡ç¨‹ç¼–å†™ã€æ¯”较容易出现E_NOTICEå’ŒE_STRICT错误的实际情形(比如Discuz!ã€PHPWindç‰ï¼‰ï¼Œå¯ä»¥è€ƒè™‘å±è”½E_NOTICEå’ŒE_STRICT错误,é¿å…过多的错误调试记录产生。
//请将指定的常é‡ä»¥æ•°ç»„ä¼ å…¥ã€‚å¯ä¼ 入的常é‡ï¼Œè¯·è‡ªè¡ŒæŸ¥æ‰¾ï¼šPHP手册 -> å½±å“PHP行为的扩展 -> Error Handling -> 预定义常é‡ã€‚http://docs.php.net/manual/zh/errorfunc.constants.php
//默认已ç»å±è”½E_STRICT,但设置时,如果ä¸ä½¿ç”¨array_merge,则必须自己å†å¡«ä¸€æ¬¡E_STRICTï¼ˆå¦‚ä¸‹ä»£ç æ‰€ç¤ºï¼‰
//Inter_Error::$conf['ignoreERROR'] = array(E_NOTICE, E_STRICT);
//å¯å¼•起错误的代ç ,这时候就会调出Inter_Erroræ¥å¤„ç†äº†
$variable1 = '1111';
function a(){
b();
}
function b(){
echo $k;
echo 1/0;
}
function c(){
//æœ‰æ—¶å€™ä½ æƒ³çŸ¥é“函数cæ˜¯ä»€ä¹ˆæ—¶å€™å’Œæ€Žæ ·è¢«è°ƒç”¨çš„ã€‚è¿™æ—¶å€™åªéœ€è¦ç”¨trigger_error,就å¯ä»¥åœ¨é¡µé¢çš„æœ€åŽå®Œæ•´çš„æŸ¥çœ‹æ•´ä¸ªè°ƒç”¨è¿‡ç¨‹äº†ã€‚
trigger_error('function c is running~', E_USER_WARNING);
throw new exception('Exception Occur!');
}
a();
//å‡å¦‚ä»£ç æ²¡æœ‰é”™è¯¯ï¼Œä½†æ˜¯ä½ åˆæƒ³çœ‹çœ‹ä¸€äº›å˜é‡å€¼ã€‚那么就å¯ä»¥è®¾ç½®å¥½Inter_Error::$conf['variables'],然åŽé™æ€è°ƒç”¨show_variables方法,以显示å˜é‡ã€‚
//注æ„:一旦有php代ç å‡ºé”™ï¼Œæ¤æ–¹æ³•会自动调用
/*
//ä»¥æ•°ç»„åŠ å…¥è¦æ£€æµ‹çš„å˜é‡åå³å¯ã€‚
Inter_Error::$conf['variables'] = array("_GET", "_POST", "_SESSION", "_COOKIE", "variable1", "variable2");
echo '<hr />';
Inter_Error::show_variables();
echo '<hr />';
*/
c();
|