Exemple #1
0
 /**
  * 解析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;
 }
Exemple #2
0
 /**
  * 设置pathInfo信息
  *
  * @param array $pathInfo
  *
  * @return array
  */
 public static function setPathInfo($pathInfo)
 {
     return self::$pathInfo = $pathInfo;
 }