mirror of
https://gitee.com/fastadminnet/framework.git
synced 2026-07-07 23:22:48 +08:00
改进Url类支持混合变量路由规则定义
This commit is contained in:
@@ -222,6 +222,12 @@ class Url
|
|||||||
} elseif (false !== strpos($url, ':' . $key)) {
|
} elseif (false !== strpos($url, ':' . $key)) {
|
||||||
$url = str_replace(':' . $key, $val, $url);
|
$url = str_replace(':' . $key, $val, $url);
|
||||||
unset($vars[$key]);
|
unset($vars[$key]);
|
||||||
|
} elseif (false !== strpos($url, '<' . $key . '>')) {
|
||||||
|
$url = str_replace('<' . $key . '>', $val, $url);
|
||||||
|
unset($vars[$key]);
|
||||||
|
} elseif (false !== strpos($url, '<' . $key . '?>')) {
|
||||||
|
$url = str_replace('<' . $key . '?>', $val, $url);
|
||||||
|
unset($vars[$key]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $url;
|
return $url;
|
||||||
@@ -286,6 +292,18 @@ class Url
|
|||||||
$var = [];
|
$var = [];
|
||||||
foreach (explode('/', $rule) as $val) {
|
foreach (explode('/', $rule) as $val) {
|
||||||
$optional = false;
|
$optional = false;
|
||||||
|
if (false !== strpos($val, '<') && preg_match_all('/<(\w+(\??))>/', $val, $matches)) {
|
||||||
|
foreach ($matches[1] as $name) {
|
||||||
|
if (strpos($name, '?')) {
|
||||||
|
$name = substr($name, 0, -1);
|
||||||
|
$optional = true;
|
||||||
|
} else {
|
||||||
|
$optional = false;
|
||||||
|
}
|
||||||
|
$var[$name] = $optional ? 2 : 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (0 === strpos($val, '[:')) {
|
if (0 === strpos($val, '[:')) {
|
||||||
// 可选参数
|
// 可选参数
|
||||||
$optional = true;
|
$optional = true;
|
||||||
@@ -294,8 +312,7 @@ class Url
|
|||||||
if (0 === strpos($val, ':')) {
|
if (0 === strpos($val, ':')) {
|
||||||
// URL变量
|
// URL变量
|
||||||
$name = substr($val, 1);
|
$name = substr($val, 1);
|
||||||
$type = $optional ? 2 : 1;
|
$var[$name] = $optional ? 2 : 1;
|
||||||
$var[$name] = $type;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $var;
|
return $var;
|
||||||
|
|||||||
Reference in New Issue
Block a user