From 9c227e9e8e17cf52d642d737f0f0b8efd7e7cb17 Mon Sep 17 00:00:00 2001 From: thinkphp Date: Tue, 13 Sep 2016 18:54:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E8=BF=9BRoute=E7=B1=BB=E7=9A=84?= =?UTF-8?q?=E8=B7=AF=E7=94=B1=E6=A0=87=E8=AF=86=E5=AD=98=E5=82=A8=20?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E8=B7=AF=E7=94=B1=E7=BC=93=E5=AD=98=E5=90=8E?= =?UTF-8?q?=E7=9A=84URL=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library/think/Route.php | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/library/think/Route.php b/library/think/Route.php index 50563671..8e37bfc0 100644 --- a/library/think/Route.php +++ b/library/think/Route.php @@ -32,10 +32,10 @@ class Route 'HEAD' => [], 'OPTIONS' => [], '*' => [], - 'map' => [], 'alias' => [], 'domain' => [], 'pattern' => [], + 'name' => [], ]; // REST路由操作方法定义 @@ -63,8 +63,6 @@ class Route private static $bind = []; // 当前分组信息 private static $group = []; - // 路由命名标识(用于快速URL生成) - private static $name = []; // 当前子域名绑定 private static $domainBind; private static $domainRule; @@ -137,19 +135,22 @@ class Route } /** - * 设置路由绑定 + * 设置或者获取路由标识 * @access public * @param string|array $name 路由命名标识 数组表示批量设置 + * @param array $value 路由地址及变量信息 * @return array */ - public static function name($name = '') + public static function name($name = '', $value = null) { if (is_array($name)) { - return self::$name = $name; + return self::$rules['name'] = $name; } elseif ('' === $name) { - return self::$name; + return self::$rules['name']; + } elseif (!is_null($value)) { + self::$rules['name'][$name][] = $value; } else { - return isset(self::$name[$name]) ? self::$name[$name] : null; + return isset(self::$rules['name'][$name]) ? self::$rules['name'][$name] : null; } } @@ -304,7 +305,7 @@ class Route } $vars = self::parseVar($rule); if (isset($name)) { - self::$name[$name][] = [$rule, $vars, self::$domain]; + self::name($name, [$rule, $vars, self::$domain]); } if ($group) { if ('*' != $type) { @@ -424,7 +425,7 @@ class Route $vars = self::parseVar($key); $item[] = ['rule' => $key, 'route' => $route, 'var' => $vars, 'option' => $options, 'pattern' => $patterns]; // 设置路由标识 - self::$name[$route][] = [$key, $vars, self::$domain]; + self::name($route, [$key, $vars, self::$domain]); } self::$rules['*'][$name] = ['rule' => $item, 'route' => '', 'var' => [], 'option' => $option, 'pattern' => $pattern]; } @@ -683,7 +684,7 @@ class Route return true === $rules ? self::$rules : self::$rules[$rules]; } else { $rules = self::$rules; - unset($rules['pattern'], $rules['alias'], $rules['domain']); + unset($rules['pattern'], $rules['alias'], $rules['domain'], $rules['name']); return $rules; } } @@ -1177,7 +1178,7 @@ class Route self::parseUrlParams(empty($path) ? '' : implode('/', $path)); // 封装路由 $route = [$module, $controller, $action]; - if (isset(self::$name[implode($depr, $route)])) { + if (isset(self::$rules['name'][implode($depr, $route)])) { throw new HttpException(404, 'invalid request:' . $url); } }