/** * 应用启动运行的函数 * * @access public * @return mixed */ public function run() { //实现对Application的扩展 Tiny::$_iserror = true; $appExtension = ExtensionFactory::getFactory('appExtension'); if ($appExtension !== null) { $appExtension->before(); $this->doRequest(); $appExtension->after(); } else { $this->doRequest(); } Tiny::$_iserror = false; }
/** * 异常处理机制 * * @access public * @param mixed $exception * @return mixed */ public static function handleException($exception) { //页面中正确运行的部分 if (ob_get_length() > 0) { ob_end_clean(); } $errorStack = array(); $file = $exception->getFile(); $line = $exception->getLine(); $code = $exception->getCode(); $message = $exception->getMessage(); if ($code !== null) { restore_error_handler(); restore_exception_handler(); $log = "{$message} (" . str_replace(TINY_ROOT, "", $file) . ":{$line})\r\nStack trace:\r\n"; $trace = $exception->getTrace(); self::paseErrorTrace($trace, $log); $errorStack = $trace; } try { $errorType = 'Exception'; Tiny::log($log, $errorType); $error_file = new File($file); $codes = $error_file->gets($line); $file = str_replace(TINY_ROOT, "", $file); $datas = array('errorType' => $errorType, 'file' => $file, 'line' => $exception->getLine(), 'codes' => $codes, 'errorStack' => $errorStack, 'errorContent' => get_defined_vars()); $error = new Error(Tiny::app(), $message, null, $datas); if ($error) { $error->handle(); self::$_iserror = false; } else { self::displayError($code, $message, $file, $line); } } catch (Exception $e) { self::displayException($e); } }