首頁 >後端開發 >php教程 >簡單介紹一下ThinkPHP5.0和ThinkPHP3.2的具體差異

簡單介紹一下ThinkPHP5.0和ThinkPHP3.2的具體差異

黄舟
黄舟原創
2017-06-18 09:19:591543瀏覽

小編小編就為大家帶來一篇淺談ThinkPHP5.0版本和ThinkPHP3.2版本的差別。小編覺得蠻不錯的,現在就分享給大家,也給大家做個參考。一起跟著小編過來看看吧

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

URL和路由

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

主要改進如下:

##增加路由變數規則;

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

請求物件和回應物件

5.0新增了請求物件Request和回應物件Response,Request統一處理請求和取得請求訊息,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類別的相關屬性或方法來完成,或是自行重新定義所需的常數。

已廢除的常數包括:

##廢除的常數包括:

廢除的常數包括:

######廢除的常數包含:##################廢除的常數包括:##################」廢除的常數包含:###############MET #####函數############5.0版本核心框架不依賴任何###自訂函數###,但仍然封裝了一些常用功能到助手函數,你可以隨意重新定義或增加助手函數。 ###

以上是簡單介紹一下ThinkPHP5.0和ThinkPHP3.2的具體差異的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn