public function onRequest($request, $response) { $filename = ZPHP::getRootPath() . DS . 'webroot' . $request->server['path_info']; if (is_file($filename)) { //解析静态文件 $response->header("Content-Type", $this->getMime($filename) . '; charset=utf-8'); $response->end(file_get_contents($filename)); return; } $param = []; if (!empty($request->get)) { $param = $request->get; } if (!empty($request->post)) { $param += $request->post; } $_SERVER['HTTP_USER_AGENT'] = $request->header['user-agent']; Request::parse($param); Request::setViewMode('Php'); Request::setHttpServer(1); Response::setResponse($response); try { $result = ZRoute::route(); } catch (\Exception $e) { $model = Formater::exception($e); $model['_view_mode'] = 'Json'; $result = Response::display($model); } $response->end($result); Request::setViewMode(ZConfig::getField('project', 'view_mode', 'Json')); Request::setHttpServer(0); }
public static function route() { $action = Config::get('ctrl_path', 'ctrl') . '\\' . Request::getCtrl(); $view = null; try { $class = Factory::getInstance($action); if (!$class instanceof IController) { throw new \Exception("ctrl error"); } else { $class->_before(); $method = Request::getMethod(); if (!method_exists($class, $method)) { throw new \Exception("method error"); } $view = $class->{$method}(); $class->_after(); if (null === $view) { return null; } return Response::display($view); } } catch (\Exception $e) { if (Request::isLongServer()) { return \call_user_func(Config::getField('project', 'exception_handler', 'ZPHP\\ZPHP::exceptionHandler'), $e); } throw $e; } }
public function onRequest($request, $response) { $param = []; if (!empty($request->get)) { $param = $request->get; } if (!empty($request->post)) { $param += $request->post; } Request::parse($param); try { $result = ZRoute::route(); } catch (\Exception $e) { $model = Formater::exception($e); $model['_view_mode'] = 'Json'; $result = Response::display($model); } $response->end($result); }
/** * @return mixed * @throws \Exception * @desc fatal error处理 */ public static function fatalHandler() { $error = \error_get_last(); if (empty($error)) { return; } if (!in_array($error['type'], array(E_ERROR, E_PARSE, E_CORE_ERROR, E_COMPILE_ERROR))) { return; } $config = ZConfig::get('project'); $model = ZFormater::fatal($error); $info['data'] = null; if ($config['debug_mode']) { $info['debug'] = $model; } Log::info([\var_export($model, true)], 'fatal'); $info['msg'] = $model['message']; $info['code'] = $model['code']; Response::status('200'); if ('Php' == Request::getViewMode()) { if ($config['debug_mode']) { Request::setTplFile('public/exception.php'); } else { Request::setTplFile('public/error.php'); } } Response::display($info); }
public static final function fatalHandler() { $error = \error_get_last(); if (empty($error)) { return; } if (!in_array($error['type'], array(E_ERROR, E_PARSE, E_CORE_ERROR, E_COMPILE_ERROR))) { return; } Response::status('200'); return Response::display(Formater::fatal($error)); }