Think\Error类简化

This commit is contained in:
thinkphp
2013-03-31 10:32:10 +08:00
parent 7890bca611
commit d0e2fbafb3

View File

@@ -19,20 +19,10 @@ class Error {
*/ */
static public function appException($e) { static public function appException($e) {
$error = array(); $error = array();
$trace = $e->getTrace();
$error['message'] = $e->getMessage(); $error['message'] = $e->getMessage();
$error['file'] = $e->getFile(); $error['file'] = $e->getFile();
$error['class'] = isset($trace[0]['class'])?$trace[0]['class']:'';
$error['function'] = isset($trace[0]['function'])?$trace[0]['function']:'';
$error['line'] = $e->getLine(); $error['line'] = $e->getLine();
$error['trace'] = ''; $error['trace'] = $e->getTraceAsString();
$time = date('y-m-d H:i:m');
foreach ($trace as $t) {
$error['trace'] .= '[' . $time . '] ' . $t['file'] . ' (' . $t['line'] . ') ';
$error['trace'] .= $t['class'] . $t['type'] . $t['function'] . '(';
$error['trace'] .= implode(', ', $t['args']);
$error['trace'] .=')<br/>';
}
self::halt($error); self::halt($error);
} }
@@ -52,9 +42,8 @@ class Error {
case E_CORE_ERROR: case E_CORE_ERROR:
case E_COMPILE_ERROR: case E_COMPILE_ERROR:
case E_USER_ERROR: case E_USER_ERROR:
ob_end_clean(); $errorStr = "[$errno] $errstr ".$errfile."$errline 行.";
$errorStr = "$errstr ".$errfile."$errline 行."; Log::write($errorStr,'ERROR');
Log::write("[$errno] ".$errorStr,'ERROR');
self::halt($errorStr); self::halt($errorStr);
break; break;
case E_STRICT: case E_STRICT:
@@ -69,7 +58,6 @@ class Error {
/** /**
* 应用关闭处理 * 应用关闭处理
* @param mixed $error 错误
* @return void * @return void
*/ */
static public function appShutdown(){ static public function appShutdown(){
@@ -87,7 +75,7 @@ class Error {
*/ */
static public function halt($error) { static public function halt($error) {
if(IS_CLI) { if(IS_CLI) {
exit($error); exit(is_array($error)?$error['message']:$error);
} }
$e = array(); $e = array();
if (Config::get('app_debug')) { if (Config::get('app_debug')) {
@@ -96,18 +84,10 @@ class Error {
$trace = debug_backtrace(); $trace = debug_backtrace();
$e['message'] = $error; $e['message'] = $error;
$e['file'] = $trace[0]['file']; $e['file'] = $trace[0]['file'];
$e['class'] = isset($trace[0]['class'])?$trace[0]['class']:'';
$e['function'] = isset($trace[0]['function'])?$trace[0]['function']:'';
$e['line'] = $trace[0]['line']; $e['line'] = $trace[0]['line'];
$traceInfo = ''; ob_start();
$time = date('y-m-d H:i:m'); debug_print_backtrace();
foreach ($trace as $t) { $e['trace'] = ob_get_clean();
$traceInfo .= '[' . $time . '] ' . $t['file'] . ' (' . $t['line'] . ') ';
$traceInfo .= $t['class'] . $t['type'] . $t['function'] . '(';
$traceInfo .= implode(', ', $t['args']);
$traceInfo .=')<br/>';
}
$e['trace'] = $traceInfo;
} else { } else {
$e = $error; $e = $error;
} }
@@ -115,7 +95,7 @@ class Error {
//否则定向到错误页面 //否则定向到错误页面
$error_page = Config::get('error_page'); $error_page = Config::get('error_page');
if (!empty($error_page)) { if (!empty($error_page)) {
redirect($error_page); header('Location: ' . $error_page);
} else { } else {
if (Config::get('show_error_msg')) if (Config::get('show_error_msg'))
$e['message'] = is_array($error) ? $error['message'] : $error; $e['message'] = is_array($error) ? $error['message'] : $error;