改进路由分组

This commit is contained in:
thinkphp
2016-08-01 16:49:05 +08:00
parent 5422f2f427
commit 9b92ee62ad

View File

@@ -274,7 +274,7 @@ class Route
} }
if ($group) { if ($group) {
if (isset(self::$rules[$type][$group]) && true === self::$rules[$type][$group]) { if (isset(self::$rules[$type][$group]) && true === self::$rules[$type][$group]) {
self::$rules[$type][$group] = self::$rules['*'][$group]; self::$rules[$type][$group] = isset(self::$rules['*'][$group]) ? self::$rules['*'][$group] : [];
} }
self::$rules[$type][$group]['rule'][] = ['rule' => $rule, 'route' => $route, 'var' => $vars, 'option' => $option, 'pattern' => $pattern]; self::$rules[$type][$group]['rule'][] = ['rule' => $rule, 'route' => $route, 'var' => $vars, 'option' => $option, 'pattern' => $pattern];
} else { } else {
@@ -348,10 +348,12 @@ class Route
self::setGroup($name, $option, $pattern); self::setGroup($name, $option, $pattern);
call_user_func_array($routes, []); call_user_func_array($routes, []);
self::setGroup($currentGroup, $currentOption, $currentPattern); self::setGroup($currentGroup, $currentOption, $currentPattern);
self::$rules['*'][$name]['route'] = ''; if ($currentGroup != $name) {
self::$rules['*'][$name]['var'] = self::parseVar($name); self::$rules['*'][$name]['route'] = '';
self::$rules['*'][$name]['option'] = $option; self::$rules['*'][$name]['var'] = self::parseVar($name);
self::$rules['*'][$name]['pattern'] = $pattern; self::$rules['*'][$name]['option'] = $option;
self::$rules['*'][$name]['pattern'] = $pattern;
}
} else { } else {
foreach ($routes as $key => $val) { foreach ($routes as $key => $val) {
if (is_numeric($key)) { if (is_numeric($key)) {
@@ -383,7 +385,7 @@ class Route
// 闭包注册 // 闭包注册
$currentOption = self::getGroup('option'); $currentOption = self::getGroup('option');
$currentPattern = self::getGroup('pattern'); $currentPattern = self::getGroup('pattern');
self::setGroup($name, $option, $pattern); self::setGroup('', $option, $pattern);
call_user_func_array($routes, []); call_user_func_array($routes, []);
self::setGroup($currentGroup, $currentOption, $currentPattern); self::setGroup($currentGroup, $currentOption, $currentPattern);
} else { } else {
@@ -823,7 +825,7 @@ class Route
if (!self::checkOption($option, $url, $request)) { if (!self::checkOption($option, $url, $request)) {
continue; continue;
} }
$key = str_replace('[think]', '/', $key);
if (is_array($rule)) { if (is_array($rule)) {
// 分组路由 // 分组路由
if (($pos = strpos($key, ':')) || ($pos = strpos($key, '<'))) { if (($pos = strpos($key, ':')) || ($pos = strpos($key, '<'))) {