解密ThinkPHP3.1.2版本之模块和操作映射


Posted in PHP onJune 19, 2014

模板和操作映射功能是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函数内部已经自动支持了模块和操作映射的情况。
例如,原来在模板文件中使用了

<a href="{:U('Member/add')}">用户注册</a>

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

总结:

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

1、有经常变化URL需要的场合
2、对URL安全性较高的场合
3、需要移植的应用不希望改变URL地址的场合

需要注意的事项:

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

PHP 相关文章推荐
file_get_contents(&quot;php://input&quot;, &quot;r&quot;)实例介绍
Jul 01 PHP
PHP生成不同颜色、不同大小的tag标签函数
Sep 23 PHP
PHP单例模式详细介绍
Jul 01 PHP
最新制作ThinkPHP3.2.3完全开发手册
Nov 23 PHP
修改PHP脚本使WordPress拦截垃圾评论的方法示例
Dec 10 PHP
ThinkPHP模板循环输出Volist标签用法实例详解
Mar 23 PHP
php同时使用session和cookie来保存用户登录信息的实现代码
May 13 PHP
PHP自定义函数实现格式化秒的方法
Sep 14 PHP
详解PHP的抽象类和抽象方法以及接口总结
Mar 15 PHP
PHP压缩图片功能的介绍
Mar 21 PHP
laravel在中间件内生成参数并且传递到控制器中的2种姿势
Oct 15 PHP
PHP tp5中使用原生sql查询代码实例
Oct 28 PHP
解密ThinkPHP3.1.2版本之模板继承
Jun 19 #PHP
解密ThinkPHP3.1.2版本之独立分组功能应用
Jun 19 #PHP
ThinkPHP3.1新特性之对Ajax的支持更加完善
Jun 19 #PHP
php数组合并array_merge()函数使用注意事项
Jun 19 #PHP
ThinkPHP3.1新特性之对分组支持的改进与完善概述
Jun 19 #PHP
ThinkPHP3.1新特性之内容解析输出详解
Jun 19 #PHP
ThinkPHP3.1新特性之对页面压缩输出的支持
Jun 19 #PHP
You might like
怎样在UNIX系统下安装MySQL
2006/10/09 PHP
php中用文本文件做数据库的实现方法
2008/03/27 PHP
codeigniter集成ucenter1.6双向通信的解决办法
2014/06/12 PHP
浅谈PHPANALYSIS提取关键字
2019/03/08 PHP
Thinkphp5 自定义上传文件名的实现方法
2019/07/23 PHP
php curl发送请求实例方法
2019/08/01 PHP
javascript据option的value值快速设定初始的selected选项
2007/08/13 Javascript
Javascript前端UI框架Kit使用指南之kitjs的对话框组件
2014/11/28 Javascript
js实现简单的左右两边固定广告效果实例
2015/04/10 Javascript
jsMind通过鼠标拖拽的方式调整节点位置
2015/04/13 Javascript
jQuery常用且重要方法汇总
2015/07/13 Javascript
JavaScript实现点击单选按钮改变输入框中文本域内容的方法
2015/08/12 Javascript
js中遍历Map对象的方法
2016/07/27 Javascript
Angularjs结合Bootstrap制作的一个TODO List
2016/08/18 Javascript
jQuery 的 ready()的纯js替代方法
2016/11/20 Javascript
微信小程序 自定义对话框实例详解
2017/01/20 Javascript
weex里Vuex state使用storage持久化详解
2017/09/09 Javascript
js 两个日期比较相差多少天的实例
2017/10/19 Javascript
浅谈 Vue 项目优化的方法
2017/12/16 Javascript
JS中数组实现代码(倒序遍历数组,数组连接字符串)
2019/12/29 Javascript
python中 chr unichr ord函数的实例详解
2017/08/06 Python
python爬虫爬取淘宝商品信息(selenum+phontomjs)
2018/02/24 Python
Python制作exe文件简单流程
2019/01/24 Python
VSCode中自动为Python文件添加头部注释
2019/11/14 Python
python中的错误如何查看
2020/07/08 Python
Python开发.exe小工具的详细步骤
2021/01/27 Python
python读取excel数据并且画图的实现示例
2021/02/08 Python
StubHub西班牙:购买和出售全球活动门票
2017/06/05 全球购物
音乐学个人的自荐书范文
2013/11/26 职场文书
年会主持词结束语
2014/03/27 职场文书
退学证明范本3篇
2014/10/29 职场文书
幼儿教师师德师风自我评价
2015/03/05 职场文书
2015年端午节国旗下演讲稿
2015/03/19 职场文书
社区文明倡议书
2015/04/28 职场文书
教育读书笔记
2015/07/02 职场文书
先进个人事迹材料(2016推荐版)
2016/03/01 职场文书