5.0版本 vs 3.2版本的用戶給出了一些5.0的主要區(qū)別进胯。
URL和路由
5.0的URL訪問(wèn)不再支持普通URL模式,路由也不支持正則路由定義,而是全部改為規(guī)則路由配合變量規(guī)則(正則定義)的方式:
主要改進(jìn)如下:
增加路由變量規(guī)則分冈;
增加組合變量支持圾另;
增加資源路由;
增加路由分組雕沉;
增加閉包定義支持集乔;
增加MISS路由定義;
支持URL路由規(guī)則反解析坡椒;
請(qǐng)求對(duì)象和響應(yīng)對(duì)象
5.0新增了請(qǐng)求對(duì)象Request和響應(yīng)對(duì)象Response扰路,Request統(tǒng)一處理請(qǐng)求和獲取請(qǐng)求信息,Response對(duì)象負(fù)責(zé)輸出客戶端或者瀏覽器響應(yīng)肠牲。
模塊和控制器
控制器的命名空間有所調(diào)整幼衰,并且可以無(wú)需繼承任何的控制器類靴跛。
應(yīng)用命名空間統(tǒng)一為app(可定義)而不是模塊名缀雳;
控制器的類名默認(rèn)不帶Controller后綴,可以配置開啟use_controller_suffix參數(shù)啟用控制器類后綴梢睛;
控制器操作方法采用return方式返回?cái)?shù)據(jù) 而非直接輸出肥印;
廢除原來(lái)的操作前后置方法;
增加beforeActionList屬性定義前置操作绝葡;
支持任意層次的控制器定義和訪問(wèn)深碱;
URL訪問(wèn)支持自動(dòng)定位控制器;
數(shù)據(jù)庫(kù)
5.0的數(shù)據(jù)庫(kù)查詢功能增強(qiáng)藏畅,原先需要通過(guò)模型才能使用的鏈?zhǔn)讲樵兛梢灾苯油ㄟ^(guò)Db類調(diào)用敷硅,原來(lái)的M函數(shù)調(diào)用可以改用db函數(shù),例如:
3.2版本
M(‘User’)->where([‘name’=>’thinkphp’])->find();
5.0版本
db(‘User’)->where(‘name’,’thinkphp’)->find();
主要改進(jìn)如下:
支持鏈?zhǔn)讲樵儾僮鳎?/p>
數(shù)據(jù)查詢支持返回對(duì)象愉阎、數(shù)組和PDOStatement對(duì)象绞蹦;
數(shù)據(jù)集查詢支持返回?cái)?shù)組和Collection對(duì)象;
增加查詢構(gòu)造器榜旦,查詢語(yǔ)法改變幽七;
支持閉包查詢;
支持分塊查詢溅呢;
支持視圖查詢澡屡;
增加SQL監(jiān)聽事件;
模型
5.0的模型變化是最大的咐旧,基本上模型是完全面向?qū)ο蟮母拍钍火模P(guān)聯(lián)模型,模型類的后綴不再帶Model铣墨,直接由命名空間區(qū)分室埋,原來(lái)的D函數(shù)調(diào)用改為model函數(shù),并且必須創(chuàng)建對(duì)應(yīng)的模型類,例如:
3.2版本
D(‘User’)->where([‘name’=>’thinkphp’])->find();
5.0版本
model(‘User’)->where(‘name’,’thinkphp’)->find();
主要改進(jìn)包括:
重構(gòu)關(guān)聯(lián)模型词顾;
支持聚合模型八秃;
廢除視圖模型(改為數(shù)據(jù)庫(kù)的視圖查詢方法);
模型的擴(kuò)展采用Trait機(jī)制肉盹;
增加獲取器和修改器昔驱;
增加時(shí)間戳自動(dòng)寫入;
增加類型字段轉(zhuǎn)換上忍;
數(shù)組訪問(wèn)支持骤肛;
JSON序列化支持;
自動(dòng)驗(yàn)證和自動(dòng)完成
5.0的數(shù)據(jù)自動(dòng)驗(yàn)證和自動(dòng)完成和3.2版本區(qū)別較大窍蓝,5.0的數(shù)據(jù)驗(yàn)證采用驗(yàn)證器定義并且通過(guò)think\Validate類進(jìn)行統(tǒng)一的驗(yàn)證腋颠。自動(dòng)完成則通過(guò)在模型里面定義修改器來(lái)完成。
異常
5.0對(duì)錯(cuò)誤零容忍吓笙,默認(rèn)情況下會(huì)對(duì)任何級(jí)別的錯(cuò)誤拋出異常(但可以在應(yīng)用公共文件中設(shè)置錯(cuò)誤級(jí)別)淑玫,并且重新設(shè)計(jì)了異常頁(yè)面,展示了詳盡的錯(cuò)誤信息面睛,便于調(diào)試絮蒿。
調(diào)試和日志
5.0的頁(yè)面Trace強(qiáng)化,支持瀏覽器控制臺(tái)查看Trace信息叁鉴。
5.0的日志驅(qū)動(dòng)增加Socket方式土涝,采用SocketLog支持遠(yuǎn)程調(diào)試。
常量
5.0版本廢棄了原來(lái)的大部分常量定義幌墓,僅僅保留了框架的路徑常量定義但壮,其余的常量可以使用App類或者Request類的相關(guān)屬性或者方法來(lái)完成,或者自己重新定義需要的常量常侣。
廢除的常量包括:
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
函數(shù)
5.0版本核心框架不依賴任何自定義函數(shù)蜡饵,但仍然封裝了一些常用功能到助手函數(shù),你可以隨意重新定義或者增加助手函數(shù)袭祟。