diff --git a/library/think/Route.php b/library/think/Route.php index a4e98504..135d5319 100644 --- a/library/think/Route.php +++ b/library/think/Route.php @@ -449,9 +449,11 @@ class Route * @param array $option 路由参数 * @return void */ - public static function alias($rule, $route = '', $option = []) + public static function alias($rule = null, $route = '', $option = []) { - if (is_array($rule)) { + if (is_null($rule)) { + return self::$alias; + } elseif (is_array($rule)) { self::$alias = array_merge(self::$alias, $rule); } else { self::$alias[$rule] = $option ? [$route, $option] : $route; diff --git a/library/think/Url.php b/library/think/Url.php index 998a1f64..0df14419 100644 --- a/library/think/Url.php +++ b/library/think/Url.php @@ -264,11 +264,11 @@ class Url return false; } - // 生成路由别名并缓存 + // 生成路由映射并缓存 private static function getRouteAlias() { - if ($alias = Cache::get('think_route_alias')) { - return $alias; + if ($item = Cache::get('think_route_map')) { + return $item; } // 获取路由定义 $rules = Route::getRules(); @@ -290,8 +290,8 @@ class Url list($route, $str) = explode('?', $route, 2); parse_str($str, $param); } - $var = self::parseVar($rule . '/' . $key); - $alias[$route][] = [$rule . '/' . $key, $var, $param]; + $var = self::parseVar($rule . '/' . $key); + $item[$route][] = [$rule . '/' . $key, $var, $param]; } } else { $route = $val['route']; @@ -304,8 +304,8 @@ class Url list($route, $str) = explode('?', $route, 2); parse_str($str, $param); } - $var = self::parseVar($rule); - $alias[$route][] = [$rule, $var, $param]; + $var = self::parseVar($rule); + $item[$route][] = [$rule, $var, $param]; } } @@ -317,10 +317,17 @@ class Url list($route, $str) = explode('?', $route, 2); parse_str($str, $param); } - $alias[$route][] = [$rule, [], $param]; + $item[$route][] = [$rule, [], $param]; } - !APP_DEBUG && Cache::set('think_route_alias', $alias); - return $alias; + + // 检测路由别名 + $alias = Route::alias(); + foreach ($alias as $rule => $route) { + $route = is_array($route) ? $route[0] : $route; + $item[$route][] = [$rule, [], []]; + } + !APP_DEBUG && Cache::set('think_route_map', $item); + return $item; } // 分析路由规则中的变量 @@ -363,6 +370,6 @@ class Url // 清空路由别名缓存 public static function clearAliasCache() { - Cache::rm('think_route_alias'); + Cache::rm('think_route_map'); } }