From 45e320f0c4fd27733b9b2a1ea04911319e6b799d Mon Sep 17 00:00:00 2001 From: thinkphp Date: Mon, 25 Mar 2013 21:35:42 +0800 Subject: [PATCH] =?UTF-8?q?Think\Route=E7=B1=BB=E7=9A=84map=E6=96=B9?= =?UTF-8?q?=E6=B3=95=E6=94=AF=E6=8C=81=E6=89=B9=E9=87=8F=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=98=A0=E5=B0=84=E8=A7=84=E5=88=99=20import=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=AC=AC=E4=BA=8C=E4=B8=AA=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E6=8C=87=E5=AE=9A=E8=B7=AF=E7=94=B1=E8=A7=84=E5=88=99=E7=9A=84?= =?UTF-8?q?=E8=AF=B7=E6=B1=82=E7=B1=BB=E5=9E=8B=EF=BC=8C=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E4=B8=BAget?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Think/Route.php | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/Think/Route.php b/Think/Route.php index 7f0ae0b2..864e6dbf 100644 --- a/Think/Route.php +++ b/Think/Route.php @@ -20,12 +20,16 @@ class Route { 'all' => [], ]; - // 路由规则映射 + // 映射规则 static private $map = []; - // 添加映射规则 - static public function map($url,$route){ - self::$map[$url] = $route; + // 添加URL映射规则 + static public function map($map,$route=''){ + if(is_array($map)) { + self::$map = array_merge(self::$map,$map); + }else{ + self::$map[$map] = $route; + } } // 添加某个路由规则 @@ -40,10 +44,8 @@ class Route { } // 导入路由规则 - static public function import($rules){ - foreach ($rules as $type=>$rule){ - self::$rules[$type] = array_merge(self::$rules[$type],$rule); - } + static public function import($rules,$type='get'){ + self::$rules[$type] = array_merge(self::$rules[$type],$rules); } // 添加一条任意请求的路由规则 @@ -176,14 +178,14 @@ class Route { } // 解析规范的路由地址 - // 地址格式 [模块/控制器/操作?]参数1=值1&参数2=值2... + // 地址格式 [控制器/操作?]参数1=值1&参数2=值2... static private function parseRoute($url) { $var = []; - if(false !== strpos($url,'?')) { // [模块/控制器/操作?]参数1=值1&参数2=值2... + if(false !== strpos($url,'?')) { // [控制器/操作?]参数1=值1&参数2=值2... $info = parse_url($url); $path = explode('/',$info['path']); parse_str($info['query'],$var); - }elseif(strpos($url,'/')){ // [模块/控制器/操作] + }elseif(strpos($url,'/')){ // [控制器/操作] $path = explode('/',$url); }else{ // 参数1=值1&参数2=值2... parse_str($url,$var); @@ -229,8 +231,8 @@ class Route { } // 解析规则路由 - // '路由规则'=>'[模块/控制器/操作]?额外参数1=值1&额外参数2=值2...' - // '路由规则'=>array('[模块/控制器/操作]','额外参数1=值1&额外参数2=值2...') + // '路由规则'=>'[控制器/操作]?额外参数1=值1&额外参数2=值2...' + // '路由规则'=>array('[控制器/操作]','额外参数1=值1&额外参数2=值2...') // '路由规则'=>'外部地址' // '路由规则'=>array('外部地址','重定向代码') // 路由规则中 :开头 表示动态变量 @@ -291,8 +293,8 @@ class Route { } // 解析正则路由 - // '路由正则'=>'[模块/控制器/操作]?参数1=值1&参数2=值2...' - // '路由正则'=>array('[模块/控制器/操作]?参数1=值1&参数2=值2...','额外参数1=值1&额外参数2=值2...') + // '路由正则'=>'[控制器/操作]?参数1=值1&参数2=值2...' + // '路由正则'=>array('[控制器/操作]?参数1=值1&参数2=值2...','额外参数1=值1&额外参数2=值2...') // '路由正则'=>'外部地址' // '路由正则'=>array('外部地址','重定向代码') // 参数值和外部地址中可以用动态变量 采用 :1 :2 的方式