public static function parsePathInfo()
{
$urlModel = Config::get('url_model');
$pathInfo = self::$pathInfo;
if (empty($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;
}