### 2019 年 8 月 16 日 發布
`RC4`版本主要改進包括`ORM`庫獨立,日志系統增加多通道支持,緩存、日志、數據庫的配置文件統一調整為多通道模式,并做了大量的改進和修正。
>[danger] 本次更新相對于`RC3`版本主要涉及配置文件的更新,其它調整參考更新日志的用法調整部分。
## 主要新特性
### 數據庫和模型改為獨立的`think-orm`庫
數據庫和模型操作核心不再內置,改為統一依賴[`topthink/think-orm`](https://github.com/top-think/think-orm)庫(該類庫已經包括其它的數據庫驅動),用法保持一致,功能也沒有任何的缺失。
此前`think-orm`庫已經獨立更新維護,但一直是同步核心的ORM,`2.0`版本進行了架構調整,保持獨立性的同時支持框架依賴,以后數據庫操作這塊統一在此類庫更新。
### 模型功能增強
對模型做了大量的功能改進,主要包括:
* 關聯類增加`withField`和`withLimit`方法
* 改進模型的`hasWhere`方法對閉包查詢條件的支持完善
* 支持`has`/`hasWhere`的多次調用
* 模型的`has`/`hasWhere`方法支持軟刪除
* 增加遠程一對一關聯
* 遠程一對一和一對多支持預載入及`has`/`hasWhere`查詢
* 模型類支持序列化及緩存操作
* 關聯預載入查詢支持緩存
* 模型方法支持依賴注入
* 模型事件改進支持系統事件系統
### 日志支持多通道、并統一命令行和WEB日志格式
此次更新對日志類做了較大的調整和增強,主要包括:
* 日志增加多通道支持,可以同時或者切換寫入多個通道
* WEB和CLI的日志記錄格式統一,并支持日志格式化
* 對JSON日志格式的改進
* 支持日志寫入事件
具體用法變化可以參考之前的博客:[6.0日志變化](https://blog.thinkphp.cn/1186947)
### 增加`Filesystem`組件
`Filesystem`組件用以替代之前的上傳類,提供了更多上傳到遠端的擴展庫支持。
### 容器對象增加回調機制
容器中的對象實例化之后,引入回調機制,利用該機制可以實現諸如注解功能等相關功能。
你可以通過`resolving`方法注冊一個全局回調
```
Container::getInstance()->resolving(function($instance,$container) {
// ...
});
```
回調方法支持兩個參數,第一個參數是容器對象實例,第二個參數是容器實例本身。
或者單獨注冊一個某個容器對象的回調
```
Container::getInstance()->resolving(\think\Cache::class,function($instance,$container) {
// ...
});
```
### 路由注解獨立為`think-annotation`庫
路由注解功能獨立為[`think-annotation`](https://github.com/top-think/think-annotation)庫,并且使用更加規范,支持IDE提示。
### 多應用模式下路由定義支持納入應用目錄
在多應用模式下,路由定義文件支持放入應用目錄的`route`目錄下。
### 模板根目錄默認放入根目錄下的`view`目錄
模板根目錄默認從應用目錄下移動到根目錄的`view`目錄,如果是多應用模式的話,下面是應用子目錄,如果你需要改回放入原先的應用目錄下,可以在應用的`template`配置文件中定義`view_path`。
```
'view_path' => app_path('view'),
```
## 更新日志
### 功能改進
* 改進路由類的配置讀取
* 改進`parseLike`查詢
* 改進`ViewResponse`類增加內容渲染輸出支持
* 增加`display`助手函數
* 驗證類`maker`方法支持注入擴展驗證規則
* 改進事件觸發的對象傳入
* 改進`Console/Table`類
* 改進關聯定義對查詢構造器的支持
* 關聯類增加`withField`和`withLimit`方法,并取消`Query`類`withField`方法
* 增加延遲關聯查詢對`withLimit`的支持
* 改進模型`toArray`方法
* 改進Url生成的域名參數
* 改進 `make:command`指令生成
* 緩存有效期支持`DateInterval
`
* 改進Query類find方法
* 改進`json`查詢
* 改進查詢緩存
* 增加`filesystem`組件
* 改進跨域請求
* 改進路由檢測緩存配置
* 改進注解路由的文件寫入
* 路由注冊支持注冊`options`請求類型
* 改進重定向路由檢測
* 改進模型的`hasWhere`方法對閉包查詢條件的支持完善
* 增加`time_query_rule`數據庫配置參數 用于自定義時間查詢規則
* 改進時間字段類型的自動識別
* 改進`redis`驅動
* 容器對象增加`invoke`回調機制
* 改進多對多關聯
* 資源路由增加`withModel`和`withValidate `對各個路由設置不同的模型綁定和驗證
* 改進`getLastInsID`方法
* 日志類調整 支持多通道寫入
* 改進模型輸出
* 支持單獨關閉某個通道的日志寫入
* 取消部署模式下 不寫入調試日志的功能 用調試級別設置單獨的日志渠道來替代
* 改進日志記錄格式
* 支持日志輸出格式化
* 改進資源路由
* 改進命令行日志實時寫入
* 日志通道支持單獨設置level配置參數
* Log類調整優化
* 增加`paginateX`查詢用于大數據分頁查詢
* 數據集增加`first`和`last`方法
* 改進`response/View`類的`assign`方法
* 改進請求參數獲取問題
* 改進`pathinfo`方法
* 增加一些路徑助手函數
* 改進多級控制器訪問
* Log類支持`__call`方法
* 多應用模式的路由定義支持放入單獨的應用目錄
* 模型增加依賴注入支持
* 改進模型事件
* 改進頁面`Trace`機制
* 改進`validate`助手函數,支持設置驗證失敗后是否拋出異常
* 改進容器`bind`方法
* 改進Redis Session驅動
* 改進日志記錄的空行問題
* 改進`RedirectResponse
`
* 改進緩存驅動
* 改進`think optimize:schema` 指令
* Url類增加https方法
* 改進`isPjax`判斷
* 改進Db類配置獲取
### 問題修正
* 修正模型屬性獲取
* 修正Request類的過濾功能
* 修正`subDomain
`方法
* 修正`input`助手函數
* 修正模型`refresh`方法
* 修正關聯統計不使用子查詢的方式
* 修正Request類`root`方法
* 修正緩存有效期處理
* 修正`MorphTo`關聯
* 修正緩存標簽
* 修正mysql驅動`insert`方法
* 修正Db類`connect`方法
* 修正`allowCrossDomain`方法
* 修正Query類`chunk`方法
* 修正分組跨域
* 修正關聯預載入查詢
* 修正時間字段寫入
* 修正驗證類`checkSize
`
* 修正多對多關聯閉包
* 修正RuleName類`setRule`方法
* 修正`whereTime`查詢
* 修正`request`助手函數
* 修正日志關閉配置
* 修復對多字節字符的兼容性
### 用法調整
* 模型切換后綴方法`switch`更改為`suffix
`
* 關聯定義僅支持查詢類的方法
* 取消Query類的`fetchArray`方法
* `select`查詢方法默認返回數據集對象
* 取消`optimize:config`指令
* 調整數據庫和緩存配置文件格式 默認采用多類型支持 方便切換
* Cache類的`init`和`connect`方法取消 并入`store`方法
* `cache`助手函數取消初始化用法
* `cache`助手函數留空返回Cache對象
* 默認時間字段類型改為`timestamp
`
* 注解路由移出核心,注解相關功能使用`topthink/think-annotation
`
* 改進路由 取消`url_convert`配置參數
* 取消`route:build`指令
* 調整默認模板目錄為根目錄`view
`
* 取消默認的請求日志記錄 在項目里面自己添加
* 統一`find`查詢必須使用查詢條件
* 擴展的`service`配置文件默認放到`vendor`目錄下
* 廢除`LogLevel`事件
* 取消App類的序列化方法
* 控制臺的`user`配置改為通過靜態方法設置當前執行用戶
更多內容可以參考[6.0完全開發手冊](http://www.hmoore.net/manual/thinkphp6_0/content)
- 值得升級到5.1的18個理由
- 5.1.7版本新特性
- JSON字段類型在ORM中的使用
- 文件下載響應對象
- 教你使用5.1的數組對象查詢
- 模型三大利器之一:搜索器
- 在ThinkPHP中使用Yaconf
- 掌握命令行的表格輸出
- 5.1.25查詢參數綁定的改進
- ThinkPHP安全規范指引
- 巧用數據集的排序功能實現統計排序
- think-orm ——基于5.1的獨立ORM庫
- think-template——基于ThinkPHP的獨立模板引擎
- ThinkPHP5.1.26版本發布——修正版本,包含安全更新
- ThinkPHP5.0和3.2再發安全更新
- 官宣:ThinkPHP發布首個LTS版本
- 你真的了解Db類和模型的正確使用姿勢么?
- 如何更有效的記錄和管理日志
- 模型三大利器之二:修改器
- ThinkPHP5.1.28版本發布——修正上一版本問題,改進關聯查詢
- 模型三大利器之三:獲取器
- API版本控制的幾種思路
- ThinkPHP5.2第一個Beta版本發布測試
- 讓你少犯錯的數據查詢基本原則
- ThinkPHP發布5.1.29版本——常規更新
- 這15個好習慣讓你更容易升級到5.2
- 如何有效提高ThinkPHP的應用性能
- 讓你提高開發效率的查詢技巧
- 模型關聯查詢不完全指南
- 5.2發布Beta2版本——統一和精簡大量用法
- ThinkPHP發布5.1.30版本——支持微秒時間字段寫入
- ThinkPHP的數據緩存使用
- ThinkPHP5.2安裝及入口文件
- ThinkPHP榮獲2018 年度最受歡迎中國開源開發框架第1名
- 5.1路由使用心得技巧
- ThinkPHP5.*版本發布安全更新
- ThinkPHP項目及代碼規范指北
- 5.2版本的設計規范指導
- ThinkPHP5.1.32版本發布——圣誕快樂
- 利用Trait特性給模型增加樂觀鎖功能
- 5.2數據庫和模型的變化(摘要)
- ThinkPHP模板引擎實現和常見問題
- ThinkPHP5.0.24版本發布——安全更新
- 不忘初心,方得始終——ThinkPHP十三周年報告
- ThinkPHP5+相關資源匯總
- 異步社區ThinkPHP周年慶專享優惠活動
- 5.2路由的調整和改進
- ThinkPHP發布5.1.33版本——包含安全更新
- ThinkPHP擴展開發指南
- ThinkPHP發布5.2Beta3版本
- ThinkPHP發布5.1.34版本——喜迎新年
- ThinkPHP發布5.2RC1版本
- ThinkPHP發布5.1.35版本——常規更新
- 5.2配置類的調整
- 5.2時間查詢的改進和優化
- 5.2RC版本升級不完全指導(僅供學習參考)
- ThinkPHP5.2版本正式變更為6.0版本
- ThinkPHP百度云云虛擬主機專享免費活動
- 事件系統以及查詢事件、模型事件的使用
- ThinkPHP6.0RC2版本發布——架構升級、精簡核心
- ThinkPHP5.1.36LTS版本發布——常規更新
- 新版Session和Cookie設計變化
- ThinkPHP5.1.37版本發布——常規更新
- ThinkPHP6.0RC3版本發布——細節完善,體驗優化
- 6.0中間件使用詳解
- Composer各大廠商鏡像地址
- ThinkPHP6.0發布計劃公告
- 「ThinkPHP開發者周刊」招募志愿者
- ThinkPHP6.0日志變化
- ThinkPHP5.1.38版本發布——常規更新
- ThinkPHP6.0RC4版本發布——ORM獨立,日志多通道支持
- ThinkORM2.0開發指南上線
- ThinkPHP6.0RC5版本發布——多應用模式獨立,中間件機制調整
- ThinkPHP6.0版本發布——程序員節福利
- ThinkPHP5.1.39LTS版本發布——常規更新
- ThinkPHP6.0.1版本發布——圣誕快樂!
- 回顧2019,展望2020!
- ThinkPHPV6.0.2版本發布——2020新春快樂!
- 周年福利系列:Swoole合作優惠
- 億速云成為ThinkPHPV6.0獨家贊助發布商??
- 新冠疫情工具和限免資源專題(保持更新中)
- 周年福利系列:創宇信用認證合作優惠
- 周年福利系列:碼云企業版限時10%優惠
- 周年福利系列:想天短說抵現優惠
- think-swoole直播:從零開始掌握swoole開發
- 周年福利系列:B2C開源電商ShopXO授權8折優惠
- 周年福利系列:LayuiAdmin 永久授權限時優惠
- ThinkPHP資源導航站上線——構建生態 服務未來
- ThinkPHP官方技術支持服務和應用服務市場上線公測
- ThinkPHP市場精選——推廣基本要素
- ThinkPHP市場精選——客服聊天專題
- ThinkPHPV6.0.3版本發布——端午安康
- ThinkPHP開發者扶持計劃
- 6.0.3版本關鍵更新及升級事項
- 「ThinkPHP開發者周刊」改版重啟
- ThinkPHP市場精選——企業建站專題
- ThinkPHP 提供統一API接口服務
- ThinkPHP市場精選——直播電商專題
- ThinkAPI服務SDK發布
- 官方服務市場啟用獨立子域名
- ThinkPHP市場精選——刷臉支付專題
- ThinkAPI推出會員服務計劃
- ThinkPHPV6.0.4版本發布——中秋國慶雙節快樂
- ThinkPHPV5.1.40版本發布——常規更新
- 1024程序員節福利走一波
- ThinkPHP V6.0.5版本發布——兼容Composer2.0
- 知識圖譜應用場景——源論技術沙龍
- ThinkPHP5.*版本改進Composer2.0的兼容
- 官方市場雙十一精選推薦
- 技術人做產品有機會么(文末送課程)
- 本周秒殺——古德云售后獲客營銷系統
- ThinkAPI服務更新——支持接口分組和PHP版本依賴調整
- PHP8新特性盤點
- PHP8新特性系列:構造器屬性提升使用及注意事項
- ThinkPHP2021新年寄語
- ThinkPHP V6.0.6&V5.1.41版本發布——兼容PHP8.0
- PHP如何更優雅地調用API接口
- ThinkPHP V6.0.7發布——修正版本
- ThinkAPI服務更新——IP白名單
- 最新版ThinkORM對于時間字段的調整
- ThinkAPI短信接口正式上線
- ThinkPHP V6.0.8版本發布——多環境變量配置支持
- 頂想云寫作服務開啟第一次公測
- ThinkSSL上線——官方SSL/TLS證書服務
- MDBootstrap國內用戶福利——ThinkPHP官方市場首發
- ThinkPHP V6.0.9版本發布——常規更新
- ThinkORM功能盤點——虛擬模型
- 全面支持主流GIT版本庫——云寫作服務第二次公測
- 云寫作服務私有化部署方案之:版本庫私有化
- 看云雙十一活動
- ThinkPHP V6.0.10LTS發布——兼容PHP8.1
- ThinkPHP V6.0.12發布——命令行兼容8.1
- 頂想云知識管理上線公測——構建企業文檔中心和知識庫
- 頂想云上線——助力生態數字化建設
- 618活動進行中——官方市場迎來一波更新
- 頂想云知識管理正式上線——看云文檔啟動遷移服務
- ThinkPHP V6.0.13發布——常規更新
- 頂想云網站助理服務上線——構建產品支持服務
- ThinkPHP發布6.1.0&6.0.14版本——安全更新
- ThinkPHP新版社區上線試運營
- ThinkAPI上架人臉核身接口——助力網站實名認證
- 辭舊迎新——舊版社區停止注冊及發帖
- ThinkPHP6.1.2版本發布——兼容PHP8.2