From 8c53d9d8c0e28d6ef3002653b30d7f738b7f0532 Mon Sep 17 00:00:00 2001 From: thinkphp Date: Thu, 7 Jul 2016 13:50:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E8=BF=9BUrl=E7=B1=BB=E7=9A=84?= =?UTF-8?q?=E7=94=9F=E6=88=90=20=E8=B0=83=E6=95=B4Route=E7=B1=BB=E7=9A=84g?= =?UTF-8?q?etRules=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library/think/Route.php | 6 +---- library/think/Url.php | 58 +++++++++++++++++++++-------------------- 2 files changed, 31 insertions(+), 33 deletions(-) diff --git a/library/think/Route.php b/library/think/Route.php index 5581716d..56153155 100644 --- a/library/think/Route.php +++ b/library/think/Route.php @@ -554,11 +554,7 @@ class Route */ public static function getRules($method = '') { - if ($method) { - return self::$rules[$method]; - } else { - return array_merge_recursive(self::$rules['*'], self::$rules['GET'], self::$rules['POST'], self::$rules['PUT'], self::$rules['DELETE']); - } + return $method ? self::$rules[$method] : self::$rules; } /** diff --git a/library/think/Url.php b/library/think/Url.php index 42219b71..e48610f3 100644 --- a/library/think/Url.php +++ b/library/think/Url.php @@ -265,21 +265,35 @@ class Url return $item; } // 获取路由定义 - $rules = Route::getRules(); - foreach ($rules as $group => $val) { - $rule = $val['rule']; - $route = $val['route']; - $vars = $val['var']; - $option = $val['option']; - $pattern = $val['pattern']; - if (is_array($rule)) { - foreach ($rule as $key => $val) { - $key = $val['rule']; - $route = $val['route']; - $var = $val['var']; - $option = $val['option']; - $pattern = $val['pattern']; - $param = []; + $array = Route::getRules(); + foreach ($array as $type => $rules) { + foreach ($rules as $group => $val) { + $rule = $val['rule']; + $route = $val['route']; + $vars = $val['var']; + $option = $val['option']; + $pattern = $val['pattern']; + if (is_array($rule)) { + foreach ($rule as $key => $val) { + $key = $val['rule']; + $route = $val['route']; + $var = $val['var']; + $option = $val['option']; + $pattern = $val['pattern']; + $param = []; + if (is_array($route)) { + $route = implode('\\', $route); + } elseif ($route instanceof \Closure) { + continue; + } elseif (strpos($route, '?')) { + list($route, $str) = explode('?', $route, 2); + parse_str($str, $param); + } + $var = array_merge($vars, $var); + $item[$route][] = [$group . '/' . $key, $var, $param]; + } + } else { + $param = []; if (is_array($route)) { $route = implode('\\', $route); } elseif ($route instanceof \Closure) { @@ -288,20 +302,8 @@ class Url list($route, $str) = explode('?', $route, 2); parse_str($str, $param); } - $var = array_merge($vars, $var); - $item[$route][] = [$group . '/' . $key, $var, $param]; + $item[$route][] = [$rule, $vars, $param]; } - } else { - $param = []; - if (is_array($route)) { - $route = implode('\\', $route); - } elseif ($route instanceof \Closure) { - continue; - } elseif (strpos($route, '?')) { - list($route, $str) = explode('?', $route, 2); - parse_str($str, $param); - } - $item[$route][] = [$rule, $vars, $param]; } }