优化代码

This commit is contained in:
thinkphp
2016-01-11 23:29:34 +08:00
parent 66e50a4c33
commit 354e8a8db0

View File

@@ -38,8 +38,10 @@ class Url
$vars = array_merge($params, $vars);
}
// 获取路由别名
$alias = self::getRouteAlias();
// 检测路由
if ($match = self::getRouteUrl($url, $vars)) {
if (isset($alias[$url]) && $match = self::getRouteUrl($alias[$url], $vars)) {
// 处理路由规则中的特殊字符
$url = str_replace('[--think--]', '', $match);
} else {
@@ -178,16 +180,15 @@ class Url
}
// 匹配路由地址
public static function getRouteUrl($name, &$vars = [])
public static function getRouteUrl($alias, &$vars = [])
{
$alias = self::getRouteAlias();
if (!empty($alias[$name])) {
foreach ($alias[$name] as $key => $val) {
foreach ($alias as $key => $val) {
list($url, $pattern) = $val;
// 检查变量匹配
// 解析安全替换
if (strpos($url, '$')) {
$url = str_replace('$', '[--think--]', $url);
}
// 检查变量匹配
if (self::pattern($pattern, $vars)) {
foreach ($vars as $key => $val) {
if (false !== strpos($url, '[:' . $key . ']')) {
@@ -201,11 +202,10 @@ class Url
return $url;
}
}
}
return false;
}
// 自动生成路由别名
// 生成路由别名并缓存
private static function getRouteAlias()
{
if ($alias = Cache::get('think_route_alias')) {
@@ -213,7 +213,9 @@ class Url
}
// 获取路由定义
$rules = Route::getRules();
if ($rules) {
if (empty($rules)) {
return [];
}
foreach ($rules as $rule => $val) {
if (!empty($val['routes'])) {
foreach ($val['routes'] as $key => $route) {
@@ -239,8 +241,6 @@ class Url
Cache::set('think_route_alias', $alias);
return $alias;
}
return [];
}
// 分析路由规则中的变量
private static function parseVar($rule)