1. 程式人生 > >thinkphp5入門【三】pathinfo模式的url訪問

thinkphp5入門【三】pathinfo模式的url訪問

 tp5訪問入口檔案的時候是,訪問public目錄下的index.php,那麼她真正訪問的url到底是什麼?如何去訪問其他頁面,實際上她預設使用的PATH_INFO模式進行訪問。

PATHINFO模式

想想在我使用tp3.2的時候,也是利用的path_info去訪問,再往前剛接觸的php的時候,我們寫的php指令碼訪問的時候就是按照檔案位置去訪問的對應url,例如http://localhost/test/a/b/c.php,確實這種就是普通的路由訪問,直接按照url去找你對應資料夾下的php然後執行。

那麼pathinfo的模式, 其url的路徑實際並不存在,apache或者nginx等通過一定的手段將不存在的路徑

儲存在$_SERVER['PATH_INFO']環境變數裡面,舉個例子http://localhost/path_info.php/index/index/index.html?id=1;

那麼在path_info.php裡面我就只寫了一個例子

<?php
echo $_SERVER['PATH_INFO'];
?>

會輸出

/index/index/index.html

這一段就是pathinfo模式去,去訪問不存在的路徑,會存在一個環境變數$_SERVER['PATH_INFO'],後面的id=1作為$_GET['id']傳入頁面。

 

TP5預設path_info模式

好吧,轉到正題上,那麼tp5的url是怎麼弄的?

實際上tp就是根據PATHINFO,從裡面提取到模組名,控制器名,操作方法名,將剩餘的部分轉換成為$_GET。

下面簡單來看一下這幾個部分

入口檔案index.php

預設為於public/index.php,定義應用目錄,載入框架引導目錄

模組

位置:(D:\wamp\www\Tp5\application\) (我用的wampServer環境,位置可能和你們不一樣,僅作參考)

             預設的index模組就是 index目錄

命名規範:目錄使用小寫+可以使用下劃線   設定名稱空間會用到。

控制器

位置:(D:\wamp\www\Tp5\application\index\controller\)

            預設的控制器檔案時Index.php

命名規範:檔名採用大駝峰法,首字母大寫,字尾名以.php結尾,(Tp3.2的時候,我們的控制器時加了.class.php作為字尾,這裡我們可以省去.class了)

控制器檔名要與類的檔名保持一致

名稱空間與類檔名所在的路徑一致

操作方法

位置:控制器類裡面的方法

           預設的時index方法

命名規範:小駝峰法

 

URL大小寫問題

 最後,再看一下這個讓人迷惑的地方,很多時候報錯就是你的url訪問找不到你的控制器類

tp5預設url不區分大小寫,url裡面的模組/控制器/操作名會自動轉化大小寫,控制器在最後呼叫的時候會轉化為駝峰法處理

下面我關閉url轉化控制器和操作名,來訪問

順道看一下日誌吧

位置:(D:\wamp\www\Tp5\runtime\log\)

日誌在專案開發的時候還是很重要的,看看日誌也能幫助理解

 

 

小結

[1]thinkphp5預設使用pathinfo模式來解析url進行訪問

[2]模組目錄小寫,控制器名和類名一致採用大駝峰,字尾是.php,操作方法採用小駝峰書寫

[3]我建議關閉“是否自動轉換URL中的控制器和操作名”,也就是config.php配置檔案裡面url_convert設定為false,大小寫嚴格一些,方便以後上線在linux執行

[4]永遠記住,日誌很重要