序言
基础
配置
架构
路由
正则路由
后置路由
路由实例
控制器
模板
调试
安全
工具
部署
正则路由
LMLPHP使用正则作为路由规则,目的是使得程序更加灵活,最大限度的信任程序员。选择正则作为路由的最佳解决方案,也是为了保证框架的更加轻巧。因此在使用路由的时候,需要您懂得一般的正则匹配规则。

添加正则路由
使用LmlApp类的addRouter方法添加正则路由,添加路由一定要在run方法之前添加,否则不会生效。系统添加路由支持链式操作,如下代码示例:
<?php
// after require LMLPHP
$router = array(
    
'/^(?:\/index\.php)?\/test\/([\w]+)\/([\d]+)$/i' => array(
        
'param'=>array('name','id'), 
        
'callback'=>array('Test','callme'),
        
'm'=>'test'// module name
        
'a'=>'index' // action name
    
)
);

lml()->app()->addRouter($router);
上面的代码添加的一条路由,匹配的URL类似:
http://www.domain.com/test/words/12
或者
http://www.domain.com/index.php/test/words/12

我们可以使用param提供的参数名,通过$_GET['name'] 获得值"words",通过$_GET['id'] 获得值"12"。
"callback"的优先级比参数"m","a"的优先级要高,若提供了callback将不会再调用控制器的方法。
上面的例子会调用Test类的静态方法callme,相当于Test::callme();。

正则路由注意事项
正则路由规则的key为完整的正则表达式,最好包含正则标识符"/"。
param参数可以不提供,若提供的参数名少于子匹配数,则只有前面的部分的匹配值可以通过$_GET获取。
正则路由的优先级与添加的顺序一致,一旦匹配上则不再匹配下一条,同时高于系统内置路由。
© 2024 LMLPHP 关于我们 联系我们 友情链接 耗时0.002694(s)
2024-12-23 03:22:43 1734895363