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

  • 相关阅读:
    OWASP要素增强Web应用程序安全(3) java程序员
    企业如何建立渗透式网络存取 java程序员
    无线网卡使用的十一条安全妙计 java程序员
    (扩展)欧几里德&&快速幂
    邻接表(两种实现形式)
    pojHighways(prime)
    并查集的几道题(hdu1198)(1232)(1272)(1598)
    hdu1372Knight Moves(简单BFS)
    hdu2647Reward(拓扑排序)
    hdu4339Query(多校四)
  • 原文地址:https://www.cnblogs.com/fangziffff123/p/7745409.html
Copyright © 2020-2023  润新知