ThinkPHP5.0版本和ThinkPHP3.2版本的區別

5.0版本和以前版本的差別較大,本篇對熟悉3.2版本的用戶給出了一些5.0的主要區別。php

URL和路由

5.0的URL訪問再也不支持普通URL模式,路由也不支持正則路由定義,而是所有改成規則路由配合變量規則(正則定義)的方式:thinkphp

主要改進以下;數據庫

  • 增長路由變量規則;
  • 增長組合變量支持;
  • 增長資源路由;
  • 增長路由分組;
  • 增長閉包定義支持;
  • 增長MISS路由定義;
  • 支持URL路由規則反解析;

請求對象和響應對象

5.0新增了請求對象Request和響應對象ResponseRequest統一處理請求和獲取請求信息,Response對象負責輸出客戶端或者瀏覽器響應。數組

模塊和控制器

控制器的命名空間有所調整,而且能夠無需繼承任何的控制器類。瀏覽器

  • 應用命名空間統一爲app(可定義)而不是模塊名;
  • 控制器的類名默認不帶Controller後綴,能夠配置開啓use_controller_suffix參數啓用控制器類後綴;
  • 控制器操做方法採用return方式返回數據 而非直接輸出;
  • 廢除原來的操做先後置方法;
  • 增長beforeActionList屬性定義前置操做;
  • 支持任意層次的控制器定義和訪問;
  • URL訪問支持自動定位控制器;

數據庫

5.0的數據庫查詢功能加強,原先須要經過模型才能使用的鏈式查詢能夠直接經過Db類調用,原來的M函數調用能夠改用db函數,例如:markdown

3.2版本

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

5.0版本

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

主要改進以下:閉包

  • 支持鏈式查詢操做;
  • 數據查詢支持返回對象、數組和PDOStatement對象;
  • 數據集查詢支持返回數組和Collection對象;
  • 增長查詢構造器,查詢語法改變;
  • 支持閉包查詢;
  • 支持分塊查詢;
  • 支持視圖查詢;
  • 增長SQL監聽事件;

模型

5.0的模型變化是最大的,基本上模型是徹底面向對象的概念,包括關聯模型,模型類的後綴再也不帶Model,直接由命名空間區分,原來的D函數調用改成model函數,而且必須建立對應的模型類,例如:app

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版本核心框架不依賴任何自定義函數,但仍然封裝了一些經常使用功能到助手函數,你能夠隨意從新定義或者增長助手函數。

相關文章
相關標籤/搜索