mirror of
https://gitee.com/fastadminnet/framework.git
synced 2026-07-06 23:02:48 +08:00
改进Route类可选参数的完整匹配检测
This commit is contained in:
@@ -210,8 +210,8 @@ class Route
|
|||||||
*/
|
*/
|
||||||
public static function rule($rule, $route = '', $type = '*', $option = [], $pattern = [], $group = '')
|
public static function rule($rule, $route = '', $type = '*', $option = [], $pattern = [], $group = '')
|
||||||
{
|
{
|
||||||
$group = $group ?: self::$group;
|
$group = $group ?: self::$group;
|
||||||
$type = strtoupper($type);
|
$type = strtoupper($type);
|
||||||
if (strpos($type, '|')) {
|
if (strpos($type, '|')) {
|
||||||
foreach (explode('|', $type) as $val) {
|
foreach (explode('|', $type) as $val) {
|
||||||
self::rule($rule, $route, $val, $option, $pattern, $group);
|
self::rule($rule, $route, $val, $option, $pattern, $group);
|
||||||
@@ -910,7 +910,7 @@ class Route
|
|||||||
if ($len1 >= $len2 || strpos($rule, '[')) {
|
if ($len1 >= $len2 || strpos($rule, '[')) {
|
||||||
if ('$' == substr($rule, -1, 1)) {
|
if ('$' == substr($rule, -1, 1)) {
|
||||||
// 完整匹配
|
// 完整匹配
|
||||||
if (!$merge && $len1 != $len2 && false === strpos($rule, '[')) {
|
if (!$merge && $len1 != $len2 && (false === strpos($rule, '[') || $len1 > $len2 || $len1 < $len2 - substr_count($rule, '['))) {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
$rule = substr($rule, 0, -1);
|
$rule = substr($rule, 0, -1);
|
||||||
@@ -924,7 +924,7 @@ class Route
|
|||||||
if ($option['after_behavior'] instanceof \Closure) {
|
if ($option['after_behavior'] instanceof \Closure) {
|
||||||
$result = call_user_func_array($option['after_behavior'], [$route]);
|
$result = call_user_func_array($option['after_behavior'], [$route]);
|
||||||
} else {
|
} else {
|
||||||
foreach((array)$option['after_behavior'] as $behavior){
|
foreach ((array) $option['after_behavior'] as $behavior) {
|
||||||
$result = Hook::exec($behavior, '', $route);
|
$result = Hook::exec($behavior, '', $route);
|
||||||
if (!is_null($result)) {
|
if (!is_null($result)) {
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user