很多情况下网站会有一些路由url比较长,想自定义符合某一个规则的url映射到特定的控制器方法,也就是自定义url路由功能。
下面对自定义路由功能进行说明:
自定义路由模式。
比如:
(1).http://localhost/index.php?welcome.index
(2).http://localhost/index.php/welcome.index
路由字符串是welcome.index(不包含最前面的?或者/),路由规则都是针对“路由字符串”的。
现在定义路由规则:
$system['route']=array(
"/^welcome\\/?(.*)$/u" => 'welcome.ajax/$1'
);
路由规则说明:
1.路由规则是一个关联数组。
2.路由规则数组的key是匹配浏览器中输入的“路由字符串”的正则表达式。
3.路由规则数组的value是替换后的路由字符串,也就是系统最终使用的“路由字符串”。
为了更好的理解路由的工作原理,下面结合系统中处理“路由字符串”的方法进行说明。
方法如下:
private static function checkRouter($pathinfo_query) {
$system = systemInfo();
if (is_array($system['route'])) {
foreach ($system['route'] as $reg => $replace) {
if (preg_match($reg, $pathinfo_query)) {
$pathinfo_query = preg_replace($reg, $replace, $pathinfo_query);
break;
}
}
}
return $pathinfo_query;
}
方法中的$pathinfo_query就是“路由字符串”,方法返回的$pathinfo_query就是系统最终使用的“路由字符串”。
Powered By 狂奔的蜗牛 | 历史版本 | 源代码 | 快速入门 | MicroPHP@开源中国
源代码许可证 Apache License v2.0
MicroPHP官方QQ交流群 : 42807575 , 有问题欢迎加群交流