# 更新日志
# 版本更新日志
- [V5.1.15 (2018-6-1)](#V5115_201861_4)
- [V5.1.14 (2018-5-18)](#V5114_2018518_35)
- [V5.1.13 (2018-5-11)](#V5113_2018511_54)
- [V5.1.12 (2018-4-25)](#V5112_2018425_83)
- [V5.1.11 (2018-4-19)](#V5111_2018419_97)
- [V5.1.10 (2018-4-16)](#V5110_2018416_110)
- [V5.1.9 (2018-4-12)](#V519_2018412_124)
- [V5.1.8 (2018-4-5)](#V518_201845_140)
- [V5.1.7 (2018-3-28)](#V517_2018328_160)
- [V5.1.6 (2018-3-26)](#V516_2018326_177)
- [V5.1.5 (2018-1-31)](#V515_2018131_231)
- [V5.1.4 (2018-1-19)](#V514_2018119_263)
- [V5.1.3 (2018-1-12)](#V513_2018112_281)
- [V5.1.2 (2018-1-8)](#V512_201818_302)
- [V5.1.1 (2018-1-3)](#V511_201813_316)
- [V5.1.0 (2018-1-1)](#V510_201811_326)
- [RC3版本(2017-11-6)](#RC32017116_385)
- [RC2版本(2017-10-17)](#RC220171017_419)
- [RC1(2017-9-8)](#RC1201798_480)
## V5.1.15 (2018-6-1)
該版本主要改進了路由緩存的性能和緩存方式設置,增加了JSON格式文件日志的支持,并修正了社區反饋的一些問題。
- 容器類增加`exists`方法 僅判斷是否存在對象實例
- 取消配置類的`autoload`方法
- 改進路由緩存大小提高性能
- 改進Dispatch類`init`方法
- 增加`make:validate`指令生成驗證器類
- Config類`get`方法支持默認值參數
- 修正字段緩存指令
- 改進App類對`null`數據的返回
- 改進模型類的`__isset`方法判斷
- 修正`Query`類的`withAggregate`方法
- 改進`RuleItem`類的`setRuleName`方法
- 修正依賴注入和參數的沖突問題
- 修正Db類對第三方驅動的支持
- 修正模型類查詢對象問題
- 修正File緩存驅動的`has`方法
- 修正資源路由嵌套
- 改進Request類對`$_SERVER`變量的讀取
- 改進請求緩存處理
- 路由緩存支持指定單獨的緩存方式和參數
- 修正資源路由的中間件多次執行問題
- 修正`optimize:config`指令
- 文件日志支持`JSON`格式日志保存
- 修正Db類`connect`方法
- 改進Log類`write`方法不會自動寫入之前日志
- 模型的關聯操作默認啟用事務
- 改進軟刪除的事件響應
## V5.1.14 (2018-5-18)
該版本主要對底層容器進行了一些優化改進,并增加了路由緩存功能,可以進一步提升路由性能。
- 依賴注入的對象參數傳入改進
- 改進核心類的容器實例化
- 改進日期字段的讀取
- 改進驗證類的`getScene`方法
- 模型的`create`方法和`save`方法支持`replace`操作
- 改進`Db`類的調用機制
- App類調整為容器類
- 改進容器默認綁定
- `Loader`類增加工廠類的實例化方法
- 增加路由變量默認規則配置參數
- 增加路由緩存設計
- 錯誤處理機制改進
- 增加清空路由緩存指令
## V5.1.13 (2018-5-11)
該版本主要增加了MySQL的XA事務支持,模型事件支持觀察者,以及對Facade類的改進。
- 改進自動緩存
- 改進Url生成
- 修正數據緩存
- 修正`value`方法的緩存
- `join`方法和`view`方法的條件支持使用`Expression`對象
- 改進驅動的`parseKey`方法
- 改進Request類`host`方法和`domain`方法對端口的處理
- 模型增加`withEvent`方法用于控制當前操作是否需要執行模型事件
- 模型`setInc/setDec`方法支持更新事件
- 模型添加`before_restore/after_restore`事件
- 增加模型事件觀察者
- 路由增加`mobile`方法設置是否允許手機訪問
- 數據庫XA事務支持
- 改進索引數組查詢對`IN`查詢的支持
- 修正`invokeMethod`方法
- 修正空數據寫入返回值的BUG
- redis驅動支持`predis`
- 改進`parseData`方法
- 改進模塊加載
- App類初始化方法調整
- 改進數組查詢對表達式`Expression`對象支持
- 改進閉包的依賴注入調用
- 改進多對多關聯的中間表模型更新
- 增加容器中對象的自定義實例化
## V5.1.12 (2018-4-25)
該版本主要改進了主從查詢的及時性,并支持動態設置請求數據。
- 支持動態設置請求數據
- 改進`comment`方法解析
- 修正App類`__unset`方法
- 改進url生成的域名綁定
- 改進主從查詢的及時性
- 修正`value`的數據緩存功能
- 改進分頁類的集合對象方法調用
- 改進Db類的代碼提示
- SQL日志增加主從標記
## V5.1.11 (2018-4-19)
該版本為安全和修正版本,改進了JSON查詢的參數綁定問題和容器類對象實例獲取,并包含一處可能的安全隱患,建議更新。
- 支持指定JSON數據查詢的字段類型
- 修正`selectInsert`方法
- `whereColumn`方法支持數組方式
- 改進容器類`make`方法
- 容器類`delete`方法支持數組
- 改進`composer`自動加載
- 改進模板引擎
- 修正`like`查詢的一處安全隱患
## V5.1.10 (2018-4-16)
該版本為修正版本,修正上一個版本的一些BUG,并增強了`think clear`指令。
- 改進`orderField`方法
- 改進`exists`查詢
- 修改cli模式入口文件位置計算
- 修正`null`查詢
- 改進`parseTime`方法
- 修正關聯預載入查詢
- 改進`mysql`驅動
- 改進`think clear`指令 支持 `-c -l -r`選項
- 改進路由規則對`/`結尾的支持
## V5.1.9 (2018-4-12)
該版本主要是一些改進和修正,并包含一個安全更新,是一個推薦更新版本。
- 默認模板渲染規則支持配置保持操作方法名
- 改進`Request`類的`ip`方法
- 支持模型軟刪除字段的默認值定義
- 改進路由變量規則對中文的支持
- 使用閉包查詢的時候使用`cache(true)` 拋出異常提示
- 改進`Loader`類`loadComposerAutoloadFiles`方法
- 改進查詢方法安全性
- 修正路由地址中控制器名駝峰問題
- 調整上一個版本的`module_init`和`app_begin`的鉤子順序問題
- 改進CLI命令行執行的問題
- 修正社區反饋的其它問題
## V5.1.8 (2018-4-5)
該版本主要改進了中間件的域名和模塊支持,并同時修正了幾個已知問題。
- 增加`template.auto_rule` 參數設置默認模板渲染的操作名自動轉換規則
- 默認模板渲染規則改由視圖驅動實現
- 修正路由標識定義
- 修正控制器路由方法
- 改進Request類`ip`方法支持自定義代理IP參數
- 路由注冊中間件支持數組方式別名
- 改進命令行執行下的`composer`自動加載
- 添加域名中間件注冊支持
- 全局中間件支持模塊定義文件
- Log日志配置支持`close`參數可以全局關閉日志寫入
- 中間件方法中捕獲`HttpResponseException`異常
- 改進中間件的閉包參數傳入
- 改進分組路由的延遲解析
- 改進URL生成對域名綁定的支持
- 改進文件緩存和文件日志驅動的并發支持
## V5.1.7 (2018-3-28)
該版本主要修正了路由的一些問題,并改進了查詢的安全性。
- 支持`middleware`配置文件預先定義中間件別名方便路由調用
- 修正資源路由
- 改進`field`方法 自動識別`fieldRaw`
- 增加`Expression`類
- Query類增加`raw`方法
- Query類的`field`/ `order` 和`where`方法都支持使用`raw`表達式查詢
- 改進`inc/dec`查詢 支持批量更新
- 改進路由分組
- 改進Response類`create`方法
- 改進composer自動加載
- 修正域名路由的`append`方法
- 修正操作方法的初始化方法獲取不到問題
## V5.1.6 (2018-3-26)
該版本主要改進了路由規則的匹配算法,大幅提升了路由性能。并正式引入了中間件的支持,可以在路由中定義或者全局定義。另外包含了一個安全更新,是一個建議更新版本。
- 改進URL生成對路由`ext`方法的支持
- 改進查詢緩存對不同數據庫相同表名的支持
- 改進composer自動加載的性能
- 改進空路由變量對默認參數的影響
- mysql的`json`字段查詢支持多級
- Query類增加`option`方法
- 優化路由匹配
- 修復驗證規則數字鍵名丟失問題
- 改進路由Url生成
- 改進一對一關聯預載入查詢
- Request類增加`rootDomain`方法
- 支持API資源控制器生成 `make:controller --api`
- 優化Template類的標簽解析
- 容器類增加刪除和清除對象實例的方法
- 修正MorphMany關聯的`eagerlyMorphToMany`方法一處錯誤
- Container類的異常捕獲改進
- Domain對象支持`bind`方法
- 修正分頁參數
- 默認模板的輸出規則不受URL影響
- 注解路由支持多級控制器
- Query類增加`getNumRows`方法獲取前次操作影響的記錄數
- 改進查詢條件的性能
- 改進模型類`readTransform`方法對序列化類型的處理
- Log類增加`close`方法可以臨時關閉當前請求的日志寫入
- 文件日志方式增加自動清理功能(設置`max_files`參數)
- 修正Query類的`getPk`方法
- 修正模板緩存的布局開關問題
- 修正Query類`select`方法的緩存
- 改進input助手函數
- 改進斷線重連的信息判斷
- 改進正則驗證方法
- 調整語言包的加載順序 放到`app_init`之前
- controller類`fetch`方法改為`final`
- 路由地址中的變量支持使用`<var>`方式
- 改進XMLResponse 支持傳入編碼過的xml內容
- 修正Query類`view`方法的數組表名支持
- 改進路由的模型閉包綁定
- 改進分組變量規則的繼承
- 改進`cli-server`模式下的`composer`自動加載
- 路由變量規則異常捕獲
- 引入中間件支持
- 路由定義增加`middleware`方法
- 增加生成中間件指令`make:middleware`
- 增加全局中間件定義支持
- 改進`optimize:config`指令對全局中間件的支持
- 改進config類`has`方法
- 改進時間查詢的參數綁定
- 改進`inc/dec/exp`查詢的安全性
## V5.1.5 (2018-1-31)
該版本主要增強了數據庫的JSON查詢,并支持JSON字段的聚合查詢,改進了一些性能問題,修正了路由的一些BUG,主要更新如下:
- 改進數據集查詢對`JSON`數據的支持
- 改進聚合查詢對`JSON`字段的支持
- 模型類增加`getOrFail`方法
- 改進數據庫驅動的`parseKey`方法
- 改進Query類`join`方法的自關聯查詢
- 改進數據查詢不存在不生成查詢緩存
- 增加`run`命令行指令啟動內置服務器
- `Request`類`pathinfo`方法改進對`cli-server`支持
- `Session`類增加`use_lock`配置參數設置是否啟用鎖機制
- 優化`File`緩存自動生成空目錄的問題
- 域名及分組路由支持`append`方法傳遞隱式參數
- 改進日志的并發寫入問題
- 改進`Query`類的`where`方法支持傳入`Query`對象
- 支持設置單個日志文件的文件名
- 修正路由規則的域名條件約束
- `Request`類增加`subDomain`方法用于獲取當前子域名
- `Response`類增加`allowCache`方法控制是否允許請求緩存
- `Request`類增加`sendData`方法便于擴展
- 改進`Env`類不依賴`putenv`方法
- 改進控制臺`trace`顯示錯誤
- 改進`MorphTo`關聯
- 改進完整路由匹配后帶斜線訪問出錯的情況
- 改進路由的多級分組問題
- 路由url地址生成支持多級分組
- 改進路由Url生成的`url_convert`參數的影響
- 改進`miss`和`auto`路由內部解析
- 取消預載入關聯查詢緩存功能
## V5.1.4 (2018-1-19)
該版本主要增強了數據庫和模型操作,主要更新如下:
- 支持設置 `deleteTime`屬性為`false` 關閉軟刪除
- 模型增加`getError`方法
- 改進Query類的`getTableFields`/`getFieldsType`方法 支持表名自動獲取
- 模型類`toCollection`方法增加參數指定數據集類
- 改進`union`查詢
- 關聯預載入`with`方法增加緩存參數
- 改進模型類的`get`和`all`方法的緩存 支持關聯緩存
- 支持`order by field`操作
- 改進`insertAll`分批寫入
- 改進`json`字段數據支持
- 增加JSON數據的模型對象化操作
- 改進路由`ext`參數檢測
- 修正`rule`方法的`method`參數使用 `get|post` 方式注冊路由的問題
## V5.1.3 (2018-1-12)
該版本主要改進了路由及調整函數加載順序,主要更新如下:
- 增加`env`助手函數;
- 增加`route`助手函數;
- 增加視圖路由方法;
- 增加路由重定向方法;
- 路由默認區分最后的目錄斜桿(支持設置不區分);
- 調整公共文件和配置文件的加載順序(可以在配置文件中直接使用助手函數);
- 視圖類增加`filter`方法設置輸出過濾;
- `view`助手函數增加`filter`參數;
- 改進緩存生成指令;
- Session類的`get`方法支持獲取多級;
- Request類`only`方法支持指定默認值;
- 改進路由分組;
- 修正使用閉包查詢的時候自動數據緩存出錯的情況;
- 廢除`view_filter`鉤子位置;
- 修正分組下面的資源路由;
- 改進session驅動;
## V5.1.2 (2018-1-8)
該版本改進了配置類及數據庫類,主要更新如下:
- 修正嵌套路由分組;
- 修正自定義模板標簽界定符后表達式語法出錯的情況;
- 修正自關聯的多次調用問題;
- 修正數組查詢的`null`條件查詢;
- 修正Query類的`order`及`field`的一處可能的BUG;
- 配置參數設置支持三級;
- 配置對象支持`ArrayAccess`;
- App類增加`path`方法用于設置應用目錄;
- 關聯定義增加`selfRelation`方法用于設置是否為自關聯;
## V5.1.1 (2018-1-3)
修正一些反饋的BUG,包括:
- 修正Cookie類存取數組的問題
- 修正Controller的`fetch`方法
- 改進跨域請求
- 修正`insertAll`方法
- 修正`chunk`方法
## V5.1.0 (2018-1-1)
主要更新如下:
- 增加注解路由支持
- 路由支持跨域請求設置
- 增加`app_dispatch`鉤子位置
- 修正多對多關聯的`detach`方法
- 修正軟刪除的`destroy`方法
- Cookie類`httponly`參數默認為false
- 日志File驅動增加`single`參數配置記錄同一個文件(不按日期生成)
- 路由的`ext`和`denyExt`方法支持不傳任何參數
- 改進模型的`save`方法對`oracle`的支持
- Query類的`insertall`方法支持配合`data`和`limit`方法
- 增加`whereOr`動態查詢支持
- 日志的ip地址記錄改進
- 模型`saveAll`方法支持`isUpdate`方法
- 改進`Pivot`模型的實例化操作
- 改進Model類的`data`方法
- 改進多對多中間表模型類
- 模型增加`force`方法強制更新所有數據
- Hook類支持設置入口方法名稱
- 改進驗證類
- 改進`hasWhere`查詢的數據重復問題
- 模型的`saveall`方法返回數據集對象
- 改進File緩存的`clear`方法
- 緩存添加統一的序列化機制
- 改進泛三級域名的綁定
- 改進泛域名的傳值和取值
- Request類增加`panDomain`方法
- 改進廢棄字段判斷
- App類增加`create`方法用于實例化應用類庫
- 容器類增加`has`方法
- 改進多數據庫切換連接
- 改進斷線重連的異常捕獲
- 改進模型類`buildQuery`方法
- Query類增加`unionAll`方法
- 關聯統計功能增強(支持Sum/Max/Min/Avg)
- 修正延遲寫入
- chunk方法支持復合主鍵
- 改進JSON類型的寫入
- 改進Mysql的insertAll方法
- Model類`save`方法改進復合主鍵包含自增的情況
- 改進Query類`inc`和`dec`方法的關鍵字處理
- File緩存inc和dec方法保持原來的有效期
- 改進redis緩存的有效期判斷
- 增加checkRule方法用于單獨數據的多個驗證規則
- 修正setDec方法的延遲寫入
- max和min方法增加force參數
- 二級配置參數區分大小寫
- 改進join方法自關聯的問題
- 修正關聯模型自定義表名的情況
- Query類增加getFieldsType和getTableFields方法
- 取消視圖替換功能及view\_replace\_str配置參數
- 改進域名綁定模塊后的額外路由規則問題
- 改進mysql的insertAll方法
- 改進insertAll方法寫入json字段數據的支持
- 改進redis長連接多編號庫的情況
## RC3版本(2017-11-6)
主要更新如下:
- 改進redis驅動的`get`方法
- 修正Query類的`alias`方法
- `File`類錯誤信息支持多語言
- 修正路由的額外參數解析
- 改進`whereTime`方法
- 改進Model類`getAttr`方法
- 改進App類的`controller`和`validate`方法支持多層
- 改進`HasManyThrough`類
- 修正軟刪除的`restore`方法
- 改進`MorpthTo`關聯
- 改進數據庫驅動類的`parseKey`方法
- 增加`whereField`動態查詢方法
- 模型增加廢棄字段功能
- 改進路由的`after`行為檢查和`before`行為機制
- 改進路由分組的檢查
- 修正mysql的`json`字段查詢
- 取消Connection類的`quote`方法
- 改進命令行的支持
- 驗證信息支持多語言
- 修正路由模型綁定
- 改進參數綁定類型對枚舉類型的支持
- 修正模板的`{$Think.version}`輸出
- 改進模板`date`函數解析
- 改進`insertAll`方法支持分批執行
- Request類`host`方法支持反向代理
- 改進`JumpResponse`支持區分成功和錯誤模板
- 改進開啟類庫后綴后的關聯外鍵自動識別問題
- 修正一對一關聯的JOIN方式預載入查詢問題
- Query類增加`hidden`方法
## RC2版本(2017-10-17)
主要更新如下:
- 修正視圖查詢
- 修正資源路由
- 修正`HasMany`關聯 修正`where`方法的閉包查詢
- 一對一關聯綁定屬性到父模型后 關聯屬性不再保留
- 修正應用的命令行配置文件讀取
- 改進`Connection`類的`getCacheKey`方法
- 改進文件上傳的非法圖像異常
- 改進驗證類的`unique`規則
- Config類`get`方法支持獲取一級配置
- 修正count方法對`fetchSql`的支持
- 修正mysql驅動對`socket`支持
- 改進Connection類的`getRealSql`方法
- 修正`view`助手函數
- Query類增加`leftJoin``rightJoin` 和 `fullJoin`方法
- 改進app\_namespace的獲取
- 改進`append`方法對一對一`bind`屬性的支持
- 改進關聯的`saveall`方法的返回值
- 路由標識設置異常修復
- 改進Route類`rule`方法
- 改進模型的`table`屬性設置
- 改進composer autofile的加載順序
- 改進`exception_handle`配置對閉包的支持
- 改進app助手函數增加參數
- 改進composer的加載路徑判斷
- 修正路由組合變量的URL生成
- 修正路由URL生成
- 改進`whereTime`查詢并支持擴展規則
- File類的`move`方法第二個參數支持`false`
- 改進Config類
- 改進緩存類`remember`方法
- 慣例配置文件調整 Url類當普通模式參數的時候不做`urlencode`處理
- 取消`ROOT_PATH`和`APP_PATH`常量定義 如需更改應用目錄 自己重新定義入口文件
- 增加`app_debug`的`Env`獲取
- 修正泛域名綁定
- 改進查詢表達式的解析機制
- mysql增加`regexp`查詢表達式 支持正則查詢
- 改進查詢表達式的異常判斷
- 改進model類的`destroy`方法
- 改進Builder類 取消`parseValue`方法
- 修正like查詢的參數綁定問題
- console和start文件移出核心納入應用庫
- 改進Db類主鍵刪除方法
- 改進泛域名綁定模塊
- 取消`BIND_MODULE`常量 改為在入口文件使用`bind`方法設置
- 改進數組查詢
- 改進模板渲染的異常處理
- 改進控制器基類的架構方法參數
- 改進Controller類的`success`和`error`方法
- 改進對瀏覽器`JSON-Handle`插件的支持
- 優化跳轉模板的移動端顯示
- 修正模型查詢的`chunk`方法對時間字段的支持
- 改進trace驅動
- Collection類增加`push`方法
- 改進Redis Session驅動
- 增加JumpResponse驅動
## RC1(2017-9-8)
主要新特性為:
- 引入容器和Facade支持
- 依賴注入完善和支持更多場景
- 重構的(對象化)路由
- 配置和路由目錄獨立
- 取消系統常量
- 助手函數增強
- 類庫別名機制
- 模型和數據庫增強
- 驗證類增強
- 模板引擎改進
- 支持PSR-3日志規范
- RC1版本取消了5.0多個字段批量數組查詢的方式
- 序言
- 基礎
- 安裝
- 開發規范
- 目錄結構
- 配置
- 架構
- 架構總覽
- 入口文件
- URL訪問
- 模塊設計
- 命名空間
- 容器和依賴注入
- Facade
- 鉤子和行為
- 中間件
- 路由
- 路由定義
- 變量規則
- 路由地址
- 閉包支持
- 路由參數
- 路由緩存
- 跨域請求
- 注解路由
- 路由分組
- MISS路由
- 資源路由
- 快捷路由
- 路由別名
- 路由綁定
- 域名路由
- URL生成
- 控制器
- 控制器定義
- 前置操作
- 跳轉和重定向
- 空操作和空控制器
- 分層控制器
- 資源控制器
- 請求
- 請求對象
- 請求信息
- 輸入變量
- 請求類型
- HTTP頭信息
- 偽靜態
- 參數綁定
- 請求緩存
- 響應
- 響應輸出
- 響應參數
- 重定向
- 數據庫
- 連接數據庫
- 查詢構造器
- 查詢數據
- 添加數據
- 更新數據
- 刪除數據
- 查詢表達式
- 鏈式操作
- 聚合查詢
- 時間查詢
- 高級查詢
- 視圖查詢
- JSON字段
- 子查詢
- 原生查詢
- 查詢事件
- 事務操作
- 監聽SQL
- 存儲過程
- 數據集
- 分布式數據庫
- 模型
- 定義
- 新增
- 更新
- 刪除
- 查詢
- JSON字段
- 獲取器
- 修改器
- 自動時間戳
- 只讀字段
- 軟刪除
- 類型轉換
- 數據完成
- 查詢范圍
- 模型輸出
- 模型事件
- 模型關聯
- 一對一關聯
- 一對多關聯
- 遠程一對多
- 多對多關聯
- 多態關聯
- 關聯預載入
- 關聯統計
- 關聯輸出
- 視圖
- 視圖渲染
- 視圖賦值
- 視圖過濾
- 模板引擎
- 模板
- 變量輸出
- 使用函數
- 運算符
- 原樣輸出
- 模板注釋
- 模板布局
- 模板繼承
- 包含文件
- 輸出替換
- 標簽庫
- 內置標簽
- 循環標簽
- 比較標簽
- 條件判斷
- 資源文件加載
- 標簽嵌套
- 原生PHP
- 定義標簽
- 標簽擴展
- 錯誤和日志
- 異常處理
- 日志處理
- 調試
- 調試模式
- Trace調試
- 性能調試
- SQL調試
- 變量調試
- 遠程調試
- 驗證
- 驗證器
- 驗證規則
- 錯誤信息
- 驗證場景
- 路由驗證
- 內置規則
- 獨立驗證
- 靜態調用
- 表單令牌
- 雜項
- 緩存
- Session
- Cookie
- 多語言
- 分頁
- 上傳
- 命令行
- 啟動內置服務器
- 自動生成目錄結構
- 創建類庫文件
- 生成類庫映射文件
- 清除緩存文件
- 生成配置緩存文件
- 生成數據表字段緩存
- 生成路由映射緩存
- 自定義指令
- 擴展庫
- 驗證碼
- 圖像處理
- Time
- 數據庫遷移工具
- Workerman
- MongoDb
- 單元測試
- 安全和性能
- 安全建議
- 優化建議
- 附錄
- 助手函數
- 升級指導
- 更新日志