public static function route() { $action = Config::get('ctrl_path', 'ctrl') . '\\' . Request::getCtrl(); $class = Factory::getInstance($action); try { if (!$class instanceof IController) { throw new \Exception("ctrl error"); } else { $view = null; if ($class->_before()) { $method = Request::getMethod(); if (!method_exists($class, $method)) { throw new \Exception("method error"); } $view = $class->{$method}(); } else { throw new \Exception($action . ':' . Request::getMethod() . ' _before() no return true'); } $class->_after(); if (Request::isLongServer()) { SSESSION::save(); } return Response::display($view); } } catch (\Exception $e) { if (Request::isLongServer()) { $result = \call_user_func(Config::getField('project', 'exception_handler', 'ZPHP\\ZPHP::exceptionHandler'), $e); if ($class instanceof IController) { $class->_after(); } return $result; } if ($class instanceof IController) { $class->_after(); } throw $e; } }
public static function start($sessionType = '', $config = '') { if (Request::isLongServer()) { return Swoole::start($sessionType, $config); } if (false === self::$isStart) { if (empty($config)) { $config = ZConfig::get('session'); } if (!empty($config['adapter'])) { $sessionType = $config['adapter']; } $lifetime = 0; if (!empty($config['cache_expire'])) { \session_cache_expire($config['cache_expire']); $lifetime = $config['cache_expire'] * 60; } $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']; \session_set_cookie_params($lifetime, $path, $domain, $secure, $httponly); $sessionName = empty($config['session_name']) ? 'ZPHPSESSID' : $config['session_name']; \session_name($sessionName); if (!empty($_GET[$sessionName])) { \session_id($_GET[$sessionName]); } elseif (!empty($_SERVER[$sessionName])) { \session_id($_SERVER[$sessionName]); } if (!empty($sessionType)) { $handler = self::getInstance($sessionType, $config); \session_set_save_handler(array($handler, 'open'), array($handler, 'close'), array($handler, 'read'), array($handler, 'write'), array($handler, 'destroy'), array($handler, 'gc')); } \session_start(); self::$isStart = true; } }