thinkphp3.2與5.0的區別有哪些

2022-02-14 19:00:54

區別:1、3.2支援普通URL模式和正則路由定義,而5.0不支援;2、5.0新增了請求物件Request和響應物件Response;3、5.0對錯誤零容忍,3.2不是;4、5.0版本廢棄了原來的大部分常數定義,僅僅保留了框架的路徑常數定義。

本教學操作環境:Windows7系統、thinkphp v5.0版、Dell G3電腦。

thinkphp5.0 與thinkphp 3.2的區別

5.0版本和之前版本的差異較大,本篇對熟悉3.2版本的使用者給出了一些5.0的主要區別。

URL和路由

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

主要改進如下;

  • 增加路由變數規則;
  • 增加組合變數支援;
  • 增加資源路由;
  • 增加路由分組;
  • 增加閉包定義支援;
  • 增加MISS路由定義;
  • 支援URL路由規則反解析;

請求物件和響應物件

5.0新增了請求物件Request和響應物件ResponseRequest統一處理請求和獲取請求資訊,Response物件負責輸出使用者端或者瀏覽器響應。

模組和控制器

控制器的名稱空間有所調整,並且可以無需繼承任何的控制器類。

  • 應用名稱空間統一為app(可定義)而不是模組名;
  • 控制器的類名預設不帶Controller字尾,可以設定開啟use_controller_suffix引數啟用控制器類字尾;
  • 控制器操作方法採用return方式返回資料 而非直接輸出;
  • 廢除原來的操作前後置方法;
  • 增加beforeActionList屬性定義前置操作;
  • 支援任意層次的控制器定義和存取;
  • URL存取支援自動定位控制器;

資料庫

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.0的模型變化是最大的,基本上模型是完全物件導向的概念,包括關聯模型,模型類的字尾不再帶Model,直接由名稱空間區分,原來的D函數呼叫改為model函數,並且必須建立對應的模型類,例如:

3.2版本

D('User')->where(['name'=>'thinkphp'])->find();

5.0版本

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

主要改進包括:

  • 重構關聯模型;
  • 支援聚合模型;
  • 廢除檢視模型(改為資料庫的檢視查詢方法);
  • 模型的擴充套件採用Trait機制;
  • 增加獲取器和修改器;
  • 增加時間戳自動寫入;
  • 增加型別欄位轉換;
  • 陣列存取支援;
  • JSON序列化支援;

自動驗證和自動完成

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

異常

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

偵錯和紀錄檔

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

5.0的紀錄檔驅動增加Socket方式,採用SocketLog支援遠端偵錯。

常數

5.0版本廢棄了原來的大部分常數定義,僅僅保留了框架的路徑常數定義,其餘的常數可以使用App類或者Request類的相關屬性或者方法來完成,或者自己重新定義需要的常數。

廢除的常數包括:

REQUEST_METHOD IS_GET IS_POST IS_PUT IS_DELETE IS_AJAX __EXT__ COMMON_MODULE MODULE_NAME CONTROLLER_NAME ACTION_NAME APP_NAMESPACE APP_DEBUG MODULE_PATH

函數

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

【相關教學推薦:】

以上就是thinkphp3.2與5.0的區別有哪些的詳細內容,更多請關注TW511.COM其它相關文章!