改进Url类的生成 调整Route类的getRules方法

This commit is contained in:
thinkphp
2016-07-07 13:50:52 +08:00
parent 4f4eb5445b
commit 8c53d9d8c0
2 changed files with 31 additions and 33 deletions

View File

@@ -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;
}
/**

View File

@@ -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];
}
}