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) { $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 function display() { if (Request::isHttp()) { Response::header("Content-Type", "text/xml; charset=utf-8"); } $data = $this->xmlEncode(); if (Request::isLongServer()) { return $data; } echo $data; return null; }
public function display() { if (Request::isHttp()) { Response::header('Content-Type', 'application/amf; charset=utf-8'); } $data = \amf3_encode($this->model); if (Request::isLongServer()) { return $data; } echo $data; return null; }
public function display() { $pack = new MessagePacker(); $pack->writeString(json_encode($this->model)); if (Request::isHttp()) { Response::header("Content-Type", "application/zpack; charset=utf-8"); } if (Request::isLongServer()) { return array($this->model, $pack->getData()); } echo $pack->getData(); return null; }
public static function start($sessionType, $config) { if (null !== self::$_sid) { return; } //判断参数里是否有sessid if (empty($config)) { $config = ZConfig::get('session'); } if (!empty($config['adapter'])) { $sessionType = $config['adapter']; } self::$_config = $config; self::$_sessionType = $sessionType; $request = Request::getRequest(); $sessionName = empty($config['session_name']) ? 'ZPHPSESSID' : $config['session_name']; $sid = null; if (!empty($request->cookie[$sessionName])) { $sid = $request->cookie[$sessionName]; } if (!$sid && !empty($request->get[$sessionName])) { $sid = $request->get[$sessionName]; } if (!$sid && !empty($request->post[$sessionName])) { $sid = $request->post[$sessionName]; } if ($sid) { $handler = Factory::getInstance($sessionType, $config); $data = $handler->read($sid); if (!empty($data)) { $_SESSION = unserialize($data); } else { $_SESSION = array(); } } else { $sid = sha1($request->header['user-agent'] . $request->server['remote_addr'] . uniqid(Request::getSocket()->worker_pid . '_')); $path = empty($config['path']) ? '/' : $config['path']; $domain = empty($config['domain']) ? '' : $config['domain']; $secure = empty($config['secure']) ? false : $config['secure']; $httponly = !isset($config['httponly']) ? true : $config['httponly']; $lifetime = 0; if (!empty($config['cache_expire'])) { $lifetime = time() + $config['cache_expire'] * 60; } Response::getResponse()->cookie($sessionName, $sid, $lifetime, $path, $domain, $secure, $httponly); $_SESSION = array(); } self::$_sid = $sid; }
public function display() { if (Request::isHttp()) { Response::header("Content-Type", "text/plain; charset=utf-8"); } if (\is_string($this->model)) { $data = $this->model; } else { $data = json_encode($this->model); } if (Request::isLongServer()) { return $data; } echo $data; return null; }
public function display() { if (Request::isHttp()) { $params = Request::getParams(); if (isset($params['jsoncallback'])) { Response::header("Content-Type", 'application/x-javascript; charset=utf-8'); } else { Response::header("Content-Type", "application/json; charset=utf-8"); } } $data = \json_encode($this->model); if (Request::isLongServer()) { return $data; } echo $data; return null; }
public function display() { $data = \json_encode($this->model, JSON_UNESCAPED_UNICODE); if (Request::isHttp()) { $params = Request::getParams(); $key = Config::getField('project', 'jsonp', 'jsoncallback'); if (isset($params[$key])) { Response::header("Content-Type", 'application/x-javascript; charset=utf-8'); $data = $params[$key] . '(' . $data . ')'; } else { Response::header("Content-Type", "application/json; charset=utf-8"); } } if (Request::isLongServer()) { return $data; } echo $data; return null; }
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); }
public function display() { $jsonData = \json_encode($this->model); $data = gzencode($jsonData); $pack = new MessagePacker(); $len = strlen($data); $pack->writeInt($len + 16); $pack->writeInt($this->model['cmd']); $pack->writeInt($this->model['rid']); $pack->writeString($data, $len); if (Request::isHttp()) { Response::header("Content-Type", "application/zrpack; charset=utf-8"); } if (Request::isLongServer()) { return array($jsonData, $pack->getData()); } echo $pack->getData(); return null; }
/** * @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)); }
public function doRequest($request, $response) { Protocol\Request::setRequest($request); Protocol\Response::setResponse($response); $this->onRequest($request, $response); }