首頁 > php框架 > ThinkPHP > 主體

thinkphp3.2與5.0的差別有哪些

青灯夜游
發布: 2022-02-14 17:41:58
原創
1891 人瀏覽過

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

thinkphp3.2與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版本核心框架不依赖任何自定义函数,但仍然封装了一些常用功能到助手函数,你可以随意重新定义或者增加助手函数。

【相关教程推荐:thinkphp框架

以上是thinkphp3.2與5.0的差別有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!