ThinkPHP 路由功能

路由功能,就是配置 URL,让 URL更加的简洁和优雅。路由模式只对 PATHINFO 模式和兼容模式起作用。

一.路由定义
启用路由前提是你的 URL 支持 PATHINFO模式或者兼容模式,而 ThinkPHP 默认的就是 PATHINF 模式。 


//启用路由功能
'URL_ROUTER_ON'=>true,


//配置路由规则
'URL_ROUTE_RULES'=>array(
//每条键值对,对应一个路由规则
),

可以通过设置默认模块进行去除。
//设置模块以及默认模块
'MODULE_ALLOW_LIST' => array('Home','Admin'),
'DEFAULT_MODULE' => 'Home', // 默认模块,可以省去模块名输入

路由规则定义的格式为:'路由表达式'=>'路由地址和参数',路由表达式包括规则路由和正则路由两种。 


二、规则路由

规则路由是 ThinkPHP 设计的一种简单实用的路由规则

1、静态地址路由


'u'=>'User/index',
这里只要输入:http://localhost/demo39/u
对应的原URLhttp://localhost/demo39/User/index 


2、 / 静态地址和动态地址结合路由

'u/:id' => 'User/index' ,
这里只要输入: http://localhost/demo39/u/5
对应的原 URL http://localhost/demo39/User/index/id/5
这里的 5 其实就是传递的 id 值,通 $_GET['id'] 获取。

3、静态地址和动态地址结合路由


'u/:type/:attr/:list'=>'User/index',
这里只要输入:http://localhost/demo39/u/5/6/7
对应的原URL
http://localhost/demo39/User/index/type/5/attr/6/list/7
这里的567分别对应了动态typeattrlist 


4、全动态地址(混乱,容易冲突,使用较少)


':u/:id'=>'User/index',
这里只要输入:http://localhost/demo39/u/5
对应的原URLhttp://localhost/demo39/User/index/id/5
这里的u5都是可以随便输入的 


PS:附加条件

a、 数字约束
'u/:id\d' => 'User/index' ,
id 后面加上一个正则的 \d 表示只能传递数字

b、 支持函数
'u/:id\d|md5' => 'User/index' ,
id 进行 md5 加密

c、 可选传参
'u/[:id\d]' => 'User/index' ,
这样的话,参数处在可选状态

d、$ 表示后面不允许再有东西
'u/:id$' => 'User/index' ,
),


三.正则路由


正则路由也就是采用正则表达式定义路由的一种方式, 很多复杂的路由设置无法通过规
则路由设置,则可以使用正则路由。

//正则路由
'/^u\/(\d{2})$/'=>'User/index?id=:1',
后面用普通的 URL 模式对应规则,不能使用'User/index/id/:1',

这里的:1 表示对应第一个正则圆括号。


//正则路由也支持函数
'/^u\/(\d{2})$/'=>'User/index?id=:1|md5', 


四.静态路由

静态路由其实就是规则路由的简化版 (又称
URL 映射) , 它就是撇除了动态路由的功能。

// 配置静态路由
'URL_MAP_RULES' => array (
'u/i' => 'User/index' ,
),

PS :由于性能问题, ThinkPHP MAP 替换为 ROUTER ,专门处理静态路由。 

五.闭包支持

有时,我们并非需要执行控制器的操作方法。可以用闭包定义一些特殊的需求的路由。

// 配置闭包定义,不执行控制器方法
'URL_ROUTE_RULES' => array (
// 规则路由
'u/:id' => function ($id) {
echo 'id:' .$id;
},
// 正则路由
'/^u\/(\d{2})$/' => function ($id) {
echo 'id:' .$id;
},
),





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值