<img src="https://img.php.cn/upload/article/000/000/020/5d16d4ae8cd5f951.jpg" alt="thinkphp5和3.2的差別" >
thinkphp5.0
版本和先前版本的差異較大,本篇對熟悉3.2
版本的用戶給了一些5.0
的主要差異。
5.0
的URL存取不再支援普通URL
模式,路由也不支援正規路由定義,而是全部改為規則路由配合變數規則(正規定義)的方式:
主要改進如下;
增加路由變數規則;
增加組合變數支援;
增加資源路由;
增加路由分組;
增加閉包定義支援;
增加MISS路由定義;
支援URL路由規則反解析;
5.0
新增了請求物件Request
和回應物件Response
,Request
統一處理請求和取得請求訊息,Response
物件負責輸出客戶端或瀏覽器回應。
控制器的命名空間有所調整,並且可以無需繼承任何的控制器類別。
app
(可定義)而不是模組名稱;Controller
後綴,可以配置開啟use_controller_suffix
參數啟用控制器類別後綴;return
方式傳回資料而非直接輸出;beforeActionList
屬性定義前置操作;5.0的資料庫查詢功能增強,原先需要透過模型才能使用的鍊式查詢可以直接透過Db
類別調用,原來的M
函數呼叫可以改用db
函數,例如:
M('User')->where(['name'=>'thinkphp'])->find();
db('User')->where('name','thinkphp')->find();
主要改進如下:
PDOStatement
物件;Collection
物件;##5.0的模型變化是最大的,基本上模型是完全物件導向的概念,包括關聯模型,模型類別的後綴不再帶
Model,直接由命名空間區分,原來的
D函數呼叫改為
model函數,並且必須建立對應的模型類,例如:
D('User')->where(['name'=>'thinkphp'])->find();
model('User')->where('name','thinkphp')->find();
機制;
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版本核心框架不依賴任何自訂函數,但仍然封裝了一些常用功能到助手函數,你可以隨意重新定義或增加助手函數。
http://www.php.cn/phpkj/thinkphp/#
以上是thinkphp5和3.2的差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!