本文轉載文章,原文鏈接爲https://www.cnblogs.com/fangziffff123/p/7745409.html。
</h1>
<div class="clear"></div>
<div class="postBody">
一 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 對控制器和操作名對應的視圖模板文件夾與文件無所謂大小寫,系統會自動匹配。