/** * 解析url获取pathinfo * * @return void */ public static function parsePathInfo() { $urlModel = Config::get('url_model'); $pathInfo = []; $isCli = Request::isCli(); //是否为命令行访问 if ($isCli) { isset($_SERVER['argv'][1]) && ($pathInfo = explode('/', $_SERVER['argv'][1])); } else { if ($urlModel === 1 || $urlModel === 2) { //pathInfo模式(含显示、隐藏index.php两种)SCRIPT_NAME if (isset($_GET[Config::get('var_pathinfo')])) { $param = $_GET[Config::get('var_pathinfo')]; } else { $param = preg_replace('/(.*)\\/(.*)\\.php(.*)/i', '\\1\\3', $_SERVER['REQUEST_URI']); $scriptName = preg_replace('/(.*)\\/(.*)\\.php(.*)/i', '\\1', $_SERVER['SCRIPT_NAME']); if (!empty($scriptName)) { $param = substr($param, strpos($param, $scriptName) + strlen($scriptName)); } } $param = ltrim($param, '/'); if (!empty($param)) { //无参数时直接跳过取默认操作 //获取参数 $pathInfo = explode(Config::get('url_pathinfo_depr'), trim(preg_replace(['/\\' . Config::get('url_html_suffix') . '/', '/\\&.*/', '/\\?.*/'], '', $param), Config::get('url_pathinfo_depr'))); } } elseif ($urlModel === 3 && isset($_GET[Config::get('var_pathinfo')])) { //兼容模式 $urlString = $_GET[Config::get('var_pathinfo')]; unset($_GET[Config::get('var_pathinfo')]); $pathInfo = explode(Config::get('url_pathinfo_depr'), trim(str_replace(Config::get('url_html_suffix'), '', ltrim($urlString, '/')), Config::get('url_pathinfo_depr'))); } } isset($pathInfo[0]) && empty($pathInfo[0]) && ($pathInfo = []); //参数不完整获取默认配置 if (empty($pathInfo)) { $pathInfo = explode('/', trim(Config::get('url_default_action'), '/')); } self::$pathInfo = $pathInfo; }
/** * 设置pathInfo信息 * * @param array $pathInfo * * @return array */ public static function setPathInfo($pathInfo) { return self::$pathInfo = $pathInfo; }