改进路由注册和检测机制

This commit is contained in:
thinkphp
2016-07-07 15:00:17 +08:00
parent 7a9e216cae
commit 29269e9dfa
2 changed files with 23 additions and 4 deletions

View File

@@ -273,6 +273,12 @@ class Route
unset(self::$rules['*'][$rule]);
}
self::$rules[$type][$rule] = ['rule' => $rule, 'route' => $route, 'var' => $vars, 'option' => $option, 'pattern' => $pattern];
if ('*' == $type) {
// 注册路由快捷方式
foreach (['GET', 'POST', 'PUT', 'DELETE'] as $method) {
self::$rules[$method][$rule] = true;
}
}
}
}
@@ -325,6 +331,7 @@ class Route
self::$rules[$type][$name]['var'] = self::parseVar($name);
self::$rules[$type][$name]['option'] = $option;
self::$rules[$type][$name]['pattern'] = $pattern;
} else {
foreach ($routes as $key => $val) {
if (is_numeric($key)) {
@@ -342,6 +349,15 @@ class Route
}
self::$rules[$type][$name] = ['rule' => $item, 'route' => '', 'var' => [], 'option' => $option, 'pattern' => $pattern];
}
if ('*' == $type) {
foreach (['GET', 'POST', 'PUT', 'DELETE'] as $method) {
if (!isset(self::$rules[$method][$name])) {
self::$rules[$method][$name] = true;
} else {
self::$rules[$method][$name] = array_merge(self::$rules[$method][$name], self::$rules['*'][$name]);
}
}
}
} else {
if ($routes instanceof \Closure) {
// 闭包注册
@@ -701,10 +717,6 @@ class Route
// 获取当前请求类型的路由规则
$rules = self::$rules[$request->method()];
if (!empty(self::$rules['*'])) {
// 合并任意请求的路由规则
$rules = array_merge_recursive(self::$rules['*'], $rules);
}
// 检测域名部署
if ($checkDomain) {
@@ -719,6 +731,9 @@ class Route
// 路由规则检测
if (!empty($rules)) {
foreach ($rules as $group => $val) {
if (true === $val) {
$val = self::$rules['*'][$group];
}
$rule = $val['rule'];
$route = $val['route'];
$vars = $val['var'];

View File

@@ -266,8 +266,12 @@ class Url
}
// 获取路由定义
$array = Route::getRules();
unset($array['*']);
foreach ($array as $type => $rules) {
foreach ($rules as $group => $val) {
if (true === $val) {
continue;
}
$rule = $val['rule'];
$route = $val['route'];
$vars = $val['var'];