ThinkPHP5.0和ThinkPHP3.2版本差異詳解
5.0版本和先前版本的差異較大,本篇對熟悉3.2版本的使用者給出了一些5.0的主要差異。本文主要和大家分享ThinkPHP5.0版本和ThinkPHP3.2版本的差異。小編覺得蠻不錯的,現在就分享給大家,也給大家做個參考。一起跟著小編過來看看吧,希望能幫助大家。
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類別的相關屬性或方法來完成,或自己重新定義所需的常數。
廢除的常數包括:
REQUEST_METHOD IS_GET IS_POST IS_PUT IS_DELETE IS_AJAX __EXT__ COMMON_MODULE MODULE_NAME CONTROLLER_NAME ACTION_NAME APP_NAMESPACE APP_NAME CONTROLLER_NAME ACTION_NAME APP_NAMESPACE APP_DEB任何自訂函數,但仍然封裝了一些常用功能到助手函數,你可以隨意重新定義或增加助手函數。
相關推薦:
ThinkPHP5.0實作圖片上傳外掛實例分享 #以上是ThinkPHP5.0和ThinkPHP3.2版本差異詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

PHP 8.4 帶來了多項新功能、安全性改進和效能改進,同時棄用和刪除了大量功能。 本指南介紹如何在 Ubuntu、Debian 或其衍生版本上安裝 PHP 8.4 或升級到 PHP 8.4

CakePHP 是 PHP 的開源框架。它旨在使應用程式的開發、部署和維護變得更加容易。 CakePHP 基於類似 MVC 的架構,功能強大且易於掌握。模型、視圖和控制器 gu

Visual Studio Code,也稱為 VS Code,是一個免費的原始碼編輯器 - 或整合開發環境 (IDE) - 可用於所有主要作業系統。 VS Code 擁有大量針對多種程式語言的擴展,可以輕鬆編寫

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲

CakePHP 是一個開源MVC 框架。它使應用程式的開發、部署和維護變得更加容易。 CakePHP 有許多函式庫可以減少大多數常見任務的過載。

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、
