路由变量规则支持闭包

This commit is contained in:
thinkphp
2016-10-19 22:51:09 +08:00
parent d0cc9a7146
commit cbd4c2c98c

View File

@@ -1285,10 +1285,17 @@ class Route
if (!$optional && !isset($m1[$key])) { if (!$optional && !isset($m1[$key])) {
return false; return false;
} }
if (isset($m1[$key]) && isset($pattern[$name]) && !preg_match('/^' . $pattern[$name] . '$/', $m1[$key])) { if (isset($m1[$key]) && isset($pattern[$name])) {
// 检查变量规则 // 检查变量规则
if ($pattern[$name] instanceof \Closure) {
$result = call_user_func_array($pattern[$name], [$m1[$key]]);
if (false === $result) {
return false; return false;
} }
} elseif (!preg_match('/^' . $pattern[$name] . '$/', $m1[$key])) {
return false;
}
}
$var[$name] = isset($m1[$key]) ? $m1[$key] : ''; $var[$name] = isset($m1[$key]) ? $m1[$key] : '';
} elseif (!isset($m1[$key]) || 0 !== strcasecmp($val, $m1[$key])) { } elseif (!isset($m1[$key]) || 0 !== strcasecmp($val, $m1[$key])) {
return false; return false;