一 Thinkphp5.0,在url部分对驼峰命名,有如下介绍
从以上文档得到如下信息:
1 默认情况下,url不区分大小写。也就是说,url中的所有大写会全部转换,去自动完成控制器与操作名的匹配。
2 默认情况由应用的配置文件 'url_convert' => true进行设置。
那么带来新的疑问:
1 驼峰命名是否只针对控制器有效??还是针对控制器和操作名均有效?
2 文档如下提示,操作名不受url自动转换影响,具体如何影响的?
3 浏览器的url与ajax提效的url是否会url自动转换失效?
以上三个疑问,直接影响框架api编写规范,下面以实际项目来测试
二 问题测试与解决
测试项目如下,为新增一条数据,返回新增行的id.
测试 1 正常访问
浏览器访问url:
http://tp5.com/index/index2/usernew
结果如下
测试 2 url大小写混乱拼写访问
从上几种URL的大写得如,无论是模块名,控制器名,还是操作名,都进行了url自动转换,自动适配,不存在大小写问题。
测试3 如果是ajax提交,跟浏览器url自动转换有区别吗?
我用layui的表单提效测试一下,action='http://tp5.com/index/index2/USERNEW':
页面如下提交:
提交后结果如下:
由此可见,ajax提交,跟浏览器url自动转换无区别
测试4 操作名大写
对比测试可见,对于操作名来说,无所谓大小写,无论是url,还是操作名,都会当作全小写对待。
测试5 控制器大小写
通过操作名不分大小写推测,控制器也应不分大小写。测试如下:
结果报错,说明,控制器不能像操作名一样大小写随便写,必须如文档规范来写。
测试6 控制器驼峰命名
驼峰命名规范有两层含义:1 首字母大写 2 第二个大写字母在url中要以下划线标识
首字母大写,原因在于,控制器是一个类,类名以大写字母开头。
当驼峰命名的控制器出现后,url中的写法以下划线标识,在url自动转换时,下划线后的字母会转成大写,与控制器中的第二个大字字母相对应 。
否则url转换后全为小写,会找到在对应控制器名,报错。
依次类推,驼峰命名可以多个大字累加吗?如下:
对比可见,驼峰命名的关键是url的下划线,至于url大小写无所谓。
测试7 控制器大小写对视图模板的影响
开发框架中的所有模板控制器文件夹均为小写,用大写表示重复。显然通通用小写即可。
而控制器如框架要求,必须是首字母大写。
可见,视图模板对应的是操作名,父文件夹对应的是控制器名,父文件夹无所谓大小写。
测试8 操作名大小写对视图模板的影响
由于操作名无论大小写,都会当成小写对待,那操作名大小写,会不会必须和视图模板名一致呢??
新增id显示成功,说明视图模板渲染不受文件名大小写影响,也会通通当作小写处理,与操作名自动匹配。
三 总结:
1 在url自动转换模式下,url与大小写无关,全部会以小写对待。
2 操作名与大小写无关,全部会以小写对待。
3 驼峰命名只针对控制器,控制器的第二个大写字母,在url中以_下划线标识。
4 对控制器和操作名对应的视图模板文件夹与文件无所谓大小写,系统会自动匹配。