Thinkphp5.0 驼峰命名小结

Posted 邯郸戏曲开发

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Thinkphp5.0 驼峰命名小结相关的知识,希望对你有一定的参考价值。

一 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 对控制器和操作名对应的视图模板文件夹与文件无所谓大小写,系统会自动匹配。

 

以上是关于Thinkphp5.0 驼峰命名小结的主要内容,如果未能解决你的问题,请参考以下文章

浅谈ThinkPH5.0和5.1的反序列化利用链分析

初步学习thinkphp5.0

thinkphp5.0命名空间

ThinkPHP5.0---URL访问

thinkphp5.0.5怎么自定义命名上传文件

thinkphp5.0学习笔记API后台处理与命名空间