From 0c05a264f4a12818adbfa9efb4af42172ef6b703 Mon Sep 17 00:00:00 2001 From: thinkphp Date: Sun, 10 Jan 2016 16:32:46 +0800 Subject: [PATCH] =?UTF-8?q?Url=E8=B7=AF=E7=94=B1=E6=A3=80=E6=B5=8B?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library/think/Route.php | 40 +++++++++++++++------------------------- library/think/Url.php | 10 +++++++--- 2 files changed, 22 insertions(+), 28 deletions(-) diff --git a/library/think/Route.php b/library/think/Route.php index 093286d7..d18ea447 100644 --- a/library/think/Route.php +++ b/library/think/Route.php @@ -143,55 +143,45 @@ class Route } // 注册任意请求的路由规则 - public static function any($rule = '', $route = '', $option = [], $pattern = []) + public static function any($rule, $route = '', $option = [], $pattern = []) { - if ('' == $rule) { - // 获取路由定义 - return self::$rules['*']; - } self::register($rule, $route, '*', $option, $pattern); } // 注册get请求的路由规则 - public static function get($rule = '', $route = '', $option = [], $pattern = []) + public static function get($rule, $route = '', $option = [], $pattern = []) { - if ('' == $rule) { - // 获取路由定义 - return self::$rules['GET']; - } self::register($rule, $route, 'GET', $option, $pattern); } // 注册post请求的路由规则 - public static function post($rule = '', $route = '', $option = [], $pattern = []) + public static function post($rule, $route = '', $option = [], $pattern = []) { - if ('' == $rule) { - // 获取路由定义 - return self::$rules['POST']; - } self::register($rule, $route, 'POST', $option, $pattern); } // 注册put请求的路由规则 - public static function put($rule = '', $route = '', $option = [], $pattern = []) + public static function put($rule, $route = '', $option = [], $pattern = []) { - if ('' == $rule) { - // 获取路由定义 - return self::$rules['PUT']; - } self::register($rule, $route, 'PUT', $option, $pattern); } // 注册delete请求的路由规则 - public static function delete($rule = '', $route = '', $option = [], $pattern = []) + public static function delete($rule, $route = '', $option = [], $pattern = []) { - if ('' == $rule) { - // 获取路由定义 - return self::$rules['DELETE']; - } self::register($rule, $route, 'DELETE', $option, $pattern); } + // 获取路由定义 + public static function getRules($method = '') + { + if ($method) { + return self::$rules[$method]; + } else { + return self::$rules['*'] + self::$rules['GET'] + self::$rules['POST'] + self::$rules['PUT'] + self::$rules['DELETE']; + } + } + // 检测子域名部署 public static function checkDomain() { diff --git a/library/think/Url.php b/library/think/Url.php index d4cdf2fc..0f02bbe4 100644 --- a/library/think/Url.php +++ b/library/think/Url.php @@ -46,7 +46,11 @@ class Url $url = $aliasUrl; } else { // 检测路由 - $match = self::checkRoute($url, $vars, $domain); + if (!$match = Cache::get(md5($url))) { + // 没有检测过 重新检测 + $match = self::checkRoute($url, $vars); + Cache::set(md5($url), $match); + } if (false === $match) { // 路由不存在 直接解析 if (false !== strpos($url, '\\')) { @@ -140,10 +144,10 @@ class Url return $url; } - protected static function checkRoute($url, $vars, $domain) + protected static function checkRoute($url, $vars) { // 获取路由定义 - $rules = Route::any(); + $rules = Route::getRules(); // 全局变量规则 $pattern = Route::pattern(); foreach ($rules as $rule => $val) {