php配置模块映射,解密ThinkPHP3.1.2版本之模块和操作映射

ThinkPHP3.1.2版本引入了模块和操作映射功能,允许动态改变URL地址,提高安全性并简化应用迁移。通过配置'URL_MODULE_MAP'和'URL_ACTION_MAP',可以实现URL的不区分大小写访问和旧URL的失效,避免大量代码修改。U函数内部已支持映射,确保模板文件无需改动。模块映射和操作映射适用于URL频繁变动、高安全性需求及应用迁移场景。
摘要由CSDN通过智能技术生成

模板和操作映射功能是ThinkPHP3.1.2版本支持的对模块和操作设置的映射机制,由于可以通过改变配置动态改变(实际真正改变,并非别名)URL访问地址,加强了应用的安全性,而且,映射机制具有URL不区分大小写访问的特性,对于应用的迁移也有很大的帮助。

因为,普通情况下,如果需要更改URL的模块或者操作访问的话,需要改动的文件较多,容易导致关联性出错。尤其是很多应用需要迁移到新版本的时候,由于模型和控制器改动较多,导致URL地址出现大的调整,通过模块和操作映射功能,就可以很轻松的解决此类问题。

1.模块映射

要定义模块映射,我们只需要在配置文件中定义:

'URL_MODULE_MAP'=>array(

'user' => 'Member',

'blog' => 'Info',

)

URL_MODULE_MAP是一个数组,每个数组项表示:

'模块映射名'=>'实际模块名'

映射名称不区分大小写,所以设置后,URL访问从原来的:

http://serverName/index.php/Member/index

http://serverName/index.php/Info/index

变成了:

http://serverName/index.php/user/index

http://serverName/index.php/blog/index

并且原来的访问URL是失效的,这也是和定义路由方式改变URL的区别之一。没有定义映射的模块访问不变。

定义了模块映射后,可以通过MODULE_ALIAS常量读取当前模块的URL名称。

2.操作映射

不仅是模块名称可以映射,操作名称也支持映射,而且是针对模块来设置的,操作映射的定义方式为:

'URL_ACTION_MAP'=>array(

'Member' => array(

'register' => 'add',

),

'Info' => array(

'list' => 'index'

),

)

URL_ACTION_MAP参数是一个二维数组,每个数组项表示:

'实际模块名'=>array(

'操作映射名1'=>'实际操作名1'

'操作映射名2'=>'实际操作名2'

......

)

操作映射名不区分大小写,如上定义后,URL访问从

http://serverName/index.php/Member/add

http://serverName/index.php/Info/index

变成了(不考虑前面定义的模块映射):

http://serverName/index.php/Member/register

http://serverName/index.php/Info/list

同样,原来的URL地址访问则失效。没有定义映射的操作访问地址不变。

定义了操作映射后,可以通过ACTION_ALIAS常量读取当前操作在URL地址中的操作名。

操作映射和模块映射可以同时定义,没有影响,例如:

'URL_MODULE_MAP'=>array(

'user' => 'Member',

),

'URL_ACTION_MAP'=>array(

'Member' => array(

'register888' => 'add',

),

)

则,原来的注册地址

http://serverName/index.php/Member/add

变成了

http://serverName/index.php/user/register888

3.U函数自动支持

可能很多人会担心,在设置了模块和操作映射后,U函数就会出现需要随之改动的情况。其实不需要担心,因为U函数内部已经自动支持了模块和操作映射的情况。

例如,原来在模板文件中使用了

用户注册

无论如何定义Member模块和add操作的映射,U方法的写法始终保持不变,仍然会正确的指向映射后的URL地址。

总结:

模块和操作映射可以用于如下场合:

1、有经常变化URL需要的场合

2、对URL安全性较高的场合

3、需要移植的应用不希望改变URL地址的场合

需要注意的事项:

在使用了模块和操作映射后,对相关URL地址的路由定义可能需要调整。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值