Tp3 和 Tp5之間的區別

2021-09-04 05:08:48 字數 2260 閱讀 8710

5.0版本和之前版本的差異較大,以下是從幾個方面來解釋它們的主要區別:

1.url和路由

5.0的url訪問不再支援普通url模式,路由也不支援正則路由定義,而是全部改為規則路由配合變數規則(正則定義)的方式:

主要改進有以下幾點:

1.增加路由變數規則、

2.增加組合變數支援、

3.增加資源路由、

4.增加路由分組、

5.增加閉包定義支援、

6.增加miss路由定義、

7.支援url路由規則反解析。

2.請求物件和響應物件

5.0新增了請求物件request和響應物件response,request統一處理請求和獲取請求資訊,response物件負責輸出客戶端或者瀏覽器響應。

3.模組和控制器

控制器的命名空間有所調整,甚至可以無需繼承任何的控制器類。

控制器的類名預設不帶controller字尾,可以配置開啟use_controller_suffix引數啟用控制器類字尾;

控制器操作方法採用return方式返回資料 而非直接輸出;

廢除原來的操作前後置方法;

增加beforeactionlist屬性定義前置操作;

支援任意層次的控制器定義和訪問;

url訪問支援自動定位控制器;

4.資料庫

5.0的資料庫查詢功能增強,原先需要通過模型才能使用的鏈式查詢可以直接通過db類呼叫,原來的m函式呼叫可以改用db函式,例如:

3.2版本的語法

m('user')->where(['name'=>'thinkphp'])->find();

5.0版本的語法

db('user')->where('name','thinkphp')->find();

主要改進如下:

支援鏈式查詢操作;

資料查詢支援返回物件、陣列和pdostatement物件;

資料集查詢支援返回陣列和collection物件;

增加查詢構造器,查詢語法改變;

支援閉包查詢;

支援分塊查詢;

支援檢視查詢;

增加sql監聽事件;

5.模型

5.0的模型變化是最大的,基本上模型是完全物件導向的概念,包括關聯模型,模型類的字尾不再帶model,直接由命名空間區分,原來的d函式呼叫改為model函式,並且必須建立對應的模型類,例如:

3.2版本的語句

d('user')->where(['name'=>'thinkphp'])->find();

5.0版本的語句

model('user')->where('name','thinkphp')->find();

主要改進包括:

重構關聯模型;

支援聚合模型;

廢除檢視模型(改為資料庫的檢視查詢方法);

模型的擴充套件採用trait機制;

增加獲取器和修改器;

增加時間戳自動寫入;

增加型別字段轉換;

陣列訪問支援;

json序列化支援;

6.自動驗證和自動完成

5.0的資料自動驗證和自動完成和3.2版本區別較大,5.0的資料驗證採用驗證器定義並且通過think\validate類進行統一的驗證。自動完成則通過在模型裡面定義修改器來完成。

7.異常

5.0對與錯誤的出現特別嚴格,預設情況下會對任何級別的錯誤丟擲異常(但可以在應用公共檔案中設定錯誤級別),並且重新設計了異常頁面,展示了詳盡的錯誤資訊,便於除錯。

8.除錯和日誌

5.0的頁面trace強化,支援瀏覽器控制台檢視trace資訊。

5.0的日誌驅動增加socket方式,採用socketlog支援遠端除錯。

9.常量

廢除的常量包括:

10.函式

5.0版本核心框架不依賴任何自定義函式,但仍然封裝了一些常用功能到助手函式,你可以隨意重新定義或者增加助手函式。

tp3與tp5的區別

不論是學習使用tp3 tp5還是面試,我們經常都會提到 thinkphp3 和thinkphp5 的一些區別有哪些,下面我對這兩者的一些區別做了一些總結 表面的區別,並不涉及核心 在tp3中,我們輸出檢視是 this display 但是在 tp5中,輸出檢視函式是 this fetch 在tp3中...

tp3 x和tp 5的區別

由於tp5.0是乙個全新的顛覆重構版本,所以現在面試很多面試官喜歡問tp3.2和tp5之間的區別,那他們之間到底有哪些區別呢?一 目錄 tp5目錄 tp3.2控制器命名必須以controller.class.php結尾,而tp5是以.php結尾 tp3.2控制器模版輸出使用 this display...

TP5和TP3 2的使用區別

模板標籤不一樣 tp5 可在配置檔案中自行定義自己喜歡的標籤 tp5 使用雙標籤 如 tp3 tp5 呼叫資料表方式 m user where name thinkphp find 3.2 db user where name thinkphp find 5.0 m db 例項化模型的方式 d us...