# 版本更新日志 [TOC=2,2] ## `V6.0.8`(2021年04月26日) 本版本主要添加了多环境变量配置文件支持 * 增加`LogRecord`事件 * 消除`Validate`类某处类型声明警告 * 路由分组增加`dispatcher`方法,支持设置分组的调度 * `Request`类增加`all`方法支持获取包括`File`在内的所有参数 * 改进环境变量定义支持多`env`文件读取 ## `V6.0.7`(2021年01月25日) 本版本主要针对上个版本做了一些路由修正,还意外收获了一些性能提升,是一个建议更新的版本。 * 修正`Validate`类的PHP8兼容性 * 改进`redis`驱动的`append`方法 * 修正路由匹配检测问题 * 优化路由变量正则规则生成 * 改进`responseView`的内容渲染 ## `V6.0.6`(2021年01月11日) 本版本更新为兼容PHP8.0版本,并做了一些的改进和优化。 * 兼容`composer2 `生成配置文件 * 优化`optimize:schema`指令 * 增加`socket-log` 的 curl 超时设置 * 修正路由匹配 * 增加兼容`PHP8`处理 * 增加汉字识别匹配范围 支持部分生僻字正则 * 改进响应文件请求时的缓冲清除 * 资源路由支持设置变量规则 * `$request->ip()` 方法兼容PHP8 * 修复验证器`in`、`between`方法,使用数组,功能异常 * 修正含有`__make`的类实例化后未执行`invokeAfter`的问题 * 修复命令行创建中间件命名空间无效 bug ## `V6.0.5`(2020年10月27日) 本次更新为兼容Composer2.0做的特别更新版本,主要包含: * 修正验证类append方法 * 改进缓存标签机制 * 改进闭包路由内使用request对象 * 改进文件缓存驱动 ## `V6.0.4`(2020年9月28日) 本次更新为常规更新,主要包含: ### 新增 * [新增] 多语言支持解析`json`文件 * [新增] 增加`app.url`配置 用于命令行下构建`request ` * [新增] 模型类增加`convertNameToCamel`属性,支持数据格式转为驼峰命名输出 * [新增] `Relation`类增加`getForeignKey`和`getLocalKey`方法 ### 修正 * [修正] 修复规则为空的bug * [修正] 修正请求缓存中间件 * [修正] 改进验证的`append`方法处理造成多次验证的情况 * [修正] 改进资源路由对路由到类的支持 * [修正] 修正重定向路由的传参 * [修正] 调整`http`初始化位置 防止容器绑定自身造成死循环 * [修正] 改进Redis驱动`select`参数处理 * [修正] 改进多对多关联查询 ### 优化 * [优化] 优化`session `文件缓存 `path `获取 * [优化] 改进路由参数检测 * [优化] 改进路由参数获取和变量检查 * [优化] 路由的请求缓存可以通过`request_cache_key`配置参数关闭 便于开发模式 * [优化] 调整路由配置载入位置 * [优化] 改进路由缓存指令 取消`opis/closure`依赖 * [优化] 改进路由的额外参数检测 * [优化] 改进`Config`类的`has`方法判断 * [优化] 改进参数绑定对Null值的支持 * [优化] 改进`when`条件查询的闭包处理 * [优化] 改进一对一关联查询对`order`排序的支持 ## `V6.0.3`(2020年6月25日) 本次更新包含一个调试模式的系统信息安全隐患修正,建议更新。 ### 主要更新: * 异常提取`session`数据时先判断是否使用了`session` * 修正文件上传类 * 取消`Event`类`withEvent`方法 * `FileResponse`支持是否强制下载设置 * `Request`对象支持`ArrayAccess`接口 * 日志的时间记录增加微秒数据支持 * 调整 `Validate `场景执行优先级 * 优化App类`getDefaultRootPath`方法 * 修正全局中间件获取`param`参数的BUG * clear命令支持多层级目录 * 修正日志记录时区问题 * 修复助手函数`public_path` * 中间件支持多个参数 * 路由检测严格按照路由定义的顺序执行 * `FileResponse`增加是否强制下载文件选项 * 修复自定义命令别名比系统别名长导致报错问题 * 改进路由到视图的变量传递 * 允许路由到一个自定义调度类 * 完善路由单元测试 * 默认路由也支持自动`OPTIONS`请求 * 改进路由调度 * 改进host和port的获取支持代理 * `Request->port` 的返回类型转化 * 改进模型生成模板 * 简化默认异常页面信息显示 * 数据库支持设置缓存store * 改进`optimize:schema`指令 * 为清理指令添加仅删除过期文件的选项 * 请求缓存增加预检缓存配置 默认有效期1800秒 * 支持`header`方式自动侦测多语言 ## `V6.0.2`(2020年1月13日) 本次更新包含一个可能的`Session`安全隐患修正,建议更新。 ### 主要更新: * 改进设置方法后缀后的操作名获取问题 * 修正`optimize:schema`指令 * 修正`Request`类`inputData`处理 * 改进中间件方法支持传多个参数 * 修正`sessionid`检查的一处隐患 * 完善对15位身份证号码的校验 * 增加远程多对多关联支持 * 增加`MongoDb`的事务支持(`mongodb`版本V4.0+) * 改进`insertAll`的`replace`支持 ## `V6.0.1`(2019年12月24日) ### 主要更新: * 完善`Request::withInput ` * 修正Content-Type获取途径 * 改进 SocketLog 驱动 * 修正 ClientArg 获取途径 * 修复FileResponse的cookie空对象异常 * 支持渲染完整的异常链信息 * 异常页面支持折叠调用堆栈信息 * 改进异常响应时内容的一致性 * 改进Error控制器对数字访问的支持 * 修正redirect助手函数 * memcached delete 支持 timeout * 修正redis驱动 * 改进memcache驱动 * 改进容器类`invokeMethod`方法 * 使用新的数组语法替代list * 缓存默认的序列化方法改为serialize/unserialize * Add Cookie SameSite(PHP>7.3) * 扩展`Socket`驱动 * 修正异常页面的模板文件 * 事件监听去重 * 取消视图日志 * 修正验证jpg结尾的图片报错问题 * 改进Url生成 * 改进Url生成伪静态后缀设置false的情况 * 改进File类型session读取`gzcompress`问题 * 修复使用路由验证后路由变量丢失的问题 * 修正多应用下路由目录路径 * 修复 `expand_level `选项异常 * 改进Cache类`remember`方法对依赖注入的支持 * 防止因日志配置异常时陷入死循环 * 模型支持动态设置数据库连接 * 修正`column`方法的查询缓存问题 * 改进Query类的`getAutoInc`方法 * 改进模型更新条件获取 * 修正使用模型对象更改数据时忽略自定义的`suffix `和 `connection`参数 * 修正XA事务 * 规范`column`方法的查询 ## `V6.0.0`(2019年10月24日) ### 主要更新日志 * mobile 验证简化 * 控制器中间件支持传参 * 增强中间件CheckRequestCache的实用性 * 改进容器invokeClass方法异常处理 * 控制器中间件过滤条件支持字符串 * 改进Route类getDomainBind方法 * 防止路由标识生成URL时生成空字符串 * 让中间件CheckRequestCache只访问一次临界区 * 完善命中判断 * 修正Request::port返回类型 * 增强高并发下session_id生成的唯一性 * 取消路由缓存功能及相关指令 * 修正 Request::remotePort 返回类型 * 完善跨域中间件的响应头部 * 改进容器异常处理 * 改进生成文件模板 * 移除build指令纳入扩展 * 改进Response增加cookie方法用于设置Cookie * 修正生成URL不传参数时,方法名为空 * 修复中间件CheckRequestCache使用过期数据 * 修复memcache驱动inc函数重复添加前缀问题 * 删除Resonse类setCookie方法 * 使用session_create_id生成id,保证唯一性 * 修复中间件FormTokenCheck无法启用问题 * 修正halt助手函数 ## RC5(2019年10月13日) `RC5`版本主要改进包括多应用模式独立,以及中间件机制调整。 ### 主要新特性 * 多应用模式独立为扩展 * 中间件分组执行 * 增加路由配置文件的全局中间件定义 * 中间件支持优先级定义 * 中间件支持请求结束回调 * 中间件执行去重 * 模板根目录免配置自动识别 * 改进智能事件订阅 * 页面Trace独立为扩展 ### 更新日志 * 修正request类isJson方法 * 提升swoole下多应用的性能 * 修正Cookie保存 * 改进字段缓存指令 * 修正路由正则生成 * 改进模板变量的全局赋值 * 改进filesystem * 改进View 增加单元测试 * 修正php模板驱动 * 取消view_base配置,增加view_dir_name配置 * 完善Session及其单元测试 * 改进session助手函数支持获取所有数据 * 完善中间件及其单元测试 * 改进事件智能订阅 * 验证错误信息支持数组 * 改进多语言自动侦测 * 改进自动多语言 * 改进事件观察者支持事件前缀 * 去除Cache返回类型限制 * 多应用配置读取优先级调整 * 多应用路由改进 * 改进批量验证的错误信息返回 * 页面Trace中间件移除 改为扩展 * 改进session初始化中间件 * 修正默认URL访问 * 修正url生成对域名绑定的支持 * 改进中间件机制 全局、路由和控制器中间件分开 ### 调整 * 获取当前应用名改为`app('http')->getName()` ## RC4(2019年8月16日) `RC4`版本主要改进包括`ORM`库独立,日志系统增加多通道支持,缓存、日志、数据库的配置文件统一调整为多通道模式,并作了大量的改进和修正。 ### 主要新特性 * 数据库和模型改为独立的`think-orm`库 * 模型关联功能增强 * 日志支持多通道、并统一命令行和WEB日志格式 * 增加`Filesystem`组件 * 增加容器对象实例化回调机制 * 路由注解独立为`think-annotation`库 * 多应用模式下路由定义支持纳入应用目录 ### 功能改进 * 改进路由类的配置读取 * 改进`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`助手函数留空返回Cache对象 * 调整调试模式检测位置 * 默认时间字段类型改为`timestamp ` * 取消Model类`getConnection`和`setConnection`方法 * 注解路由移出核心,注解相关功能使用`topthink/think-annotation ` * 改进路由 取消`url_convert`配置参数 * 取消`route:build`指令 * 调整默认模板目录为根目录`view ` * 取消默认的请求日志记录 在项目里面自己添加 * 统一`find`查询必须使用查询条件 * 扩展的service配置文件默认放到vendor目录下 * 废除`LogLevel`事件 * 取消App类的序列化方法 * 控制台的`user`配置改为通过静态方法设置当前执行用户 ## RC3(2019年6月3日) RC3版本主要改进和优化了系统内置中间件,改进了一些用法和体验,并且把不常用的驱动移出核心改为扩展方式提供。 ### 主要新特性 * 增加`whereWeek`日期查询 * 自增ID获取支持类型自动转换 * 当前请求记录匹配路由规则 * 增加`requireWithout`验证规则 * 优化路由ext和name方法以及URL生成 * 增加项目自定义类 * URL生成使用对象方式操作 * 修改器改进 * `dump`/`halt`助手函数调整支持输出多个变量 * 关联自动更新 * 模型数据集增加`delete`和`update`方法 * 模型支持表后缀以及动态切换 * 注解路由支持给某个路由指定所属分组 * 多语言支持分组定义 * 支持自定义加载语言文件 * 多语言定义支持YML格式 * 缓存标签改进 * 缓存类增加`push`方法 * Cookie保存时间支持DateTimeInterface * 增加表单令牌中间件 * 控制器支持__call方法 * 增加`deny_app_list`配置参数 * 控制器中间件only和except定义不区分大小写 * `app_map`支持指定泛应用映射 ### 问题修正 * 修正参数绑定的浮点型精度问题 * 修正软删除 * 修正模型的数据库连接 * 修正`RedirectResponse ` * 修正Session类`flush`方法 * 修正JSON字段参数绑定 * 修正`make:controller`指令生成 * 修正Cache类的`get`方法默认值 * 修正域名绑定 * 修正关联模型的动态获取器 * 修正模型`dateFormat`属性方法 * 修正url生成对多入口的支持 * 修正ini配置文件格式的布尔值转换问题 * 修正路由延迟解析全局配置无效的问题 * 修正路由缓存问题 * 修正关联`update`操作 * 修正`Relation::$selfRelation`默认为`null`,导致`Relation::isSelfRelation()`方法报错 * 修正`redis`缓存驱动 * 修正事件智能订阅`observe`方法 * 修正模型字段定义对日期查询无效的问题 * 修正Console类`getNamespaces`方法 * 修正`where`查询方法传入Query对象的时候缺少`bind`数据的问题 * 修正request类`method`方法 * 修正`route:list`指令 * 修正`Collection`类`load`方法 * 修正`redis`驱动的端口类型 * 修正`session`数据序列化使用JSON处理的问题 * 修正分组路由合并解析 * 修正模型的`hidden`方法隐藏关联模型的问题 * 修正关联查询关联键为空的错误 * 修正返回204状态码的响应判断 * 修正`Request`类`has`方法对`env`和`session`的支持 * 修正`provider.php`文件无效问题 * 修正关联查询的部分问题 * 修正validate助手函数支持指定验证器类 * 修正验证类`getValidateType`方法 * 修正入口单独开启调试模式 * 修正加载Composer应用 ### 用法调整 * 页面trace中间件仅在调试模式有效 * `Socket`日志驱动移出核心 * `PostgreSQL`、`Sqlite`和`SqlServer`驱动移出核心 ,改为扩展 * 取消内置`think\Controller`基类 * `Yaconf`支持移出核心 纳入扩展`think-yaconf` * 字段排除改为`withoutField`方法 * 取消`useGlobalScope`方法增加`withoutGlobalScope`方法 * 更改默认生成的中间件位置 * 加载默认语言包无需开启多语言中间件 * `Cookie`类恢复`get`和`has`方法支持 * `token`助手函数调整 * 全局请求缓存参数调整 * 统一中间件调用传参,不支持`:`分割传参 * 缓存数据统一进行序列化后存储 * Cache类rm方法更改为delete方法 * validate助手函数返回Validate对象实例,参数改变 ### 废弃用法 * 取消多语言的`auto_detect`配置 * 取消`session`类的`auto_start`配置参数和`boot`方法 * 废弃`Where`数组对象查询 * 取消模型事件观察者 * 取消`JumpResponse`及`success`/`error`/`result`等方法和助手函数 * 取消表达式查询解析扩展及`think\db\Expression`类 * 废弃模型自动完成功能,使用模型事件替代 * 取消`cookie`的`prefix`参数 * 取消一系列不推荐使用的助手函数 * 取消`optimize:facade` `optimize:model`指令 改为扩展方式 * 取消命令行执行URL * 删除`Config`类`__get` 和 `__isset` 方法 ## RC2(2019年4月22日) 相比较`RC1`版本更新调整较大,主要更新如下: * 底层架构针对协程做优化调整 * 增加WEB应用管理类`Http` * 增加应用初始化服务和服务注册机制 * 查询事件和模型事件使用事件系统接管 * `Session`类重构,不再使用PHP内置会话 * `Cookie`类仅支持设置和写入,不再支持读取 * 取消`Config`类的动态设置功能 * 部分核心功能中间件化(页面Trace、多语言、请求缓存和Session初始化) * 取消惯例配置文件 * 增加驱动接口规范驱动开发 * 改进Db类和查询类 * 精简一些不必要的类库 * 改进路由注册 * 由于异常的需要`View`类改为内置,但默认仅支持原生PHP模板 * 大量细节改进和修正 ## RC1(2019年2月14日) * 改进Url类`build`方法 * 修复获取当前页码数据类型 * 修正`parseKey`方法传入数值的情况 * 改进`optimize:config`指令对`declare`申明的支持 * 取消URL参数模式配置 * 增加`optimize:facade`指令用于生成`facade`类的方法注释 * 取消`Query`类的`extend`方法 * 原来的`Expression`类更改为`Raw`类 * 增加新的`Expression`类用于表达式查询扩展 * `Collection`类增加`whereLike`/`whereNotLike`/`whereIn`/`whereNotIn`/`whereBetween`/`whereNotBetween`等快捷方法 * Query类的`raw`方法移动到Db类 * 取消`Request`类的`hook`方法 * 修正`Route::view`方法 * 优化模型获取器方法 * 多对多关联的`pivotDataName`方法更名为`name`方法 * Query类增加`partition`/`duplicate`/`extra`方法 * 改进mysql驱动支持分区和`duplicate`以及额外参数 * mysql驱动的`insert`方法改用更清晰的`insert set`语法 * 修正`Event`类`bind`属性定义 * 修正验证类的`append`一处bug * 改进`Query`类`update`方法支持读取模型的更新条件 * 取消模型类的`getUpdateWhere`方法统一使用`getWhere`方法 * 改进query类的`fetchArray`方法处理 * 改进路由类取消`app`属性 * 增加`think\facade\RuleName`类 * 增加`whereFieldRaw`查询方法 * 改进自动多应用名称获取 * App类增加`withEvent`方法支持关闭事件机制 * 改进`Dispatch`类对`var_dump`的支持 * 改进`hasMany`的`withCount`自关联 * 修正纯数字检测参数类型转换问题 * 修正`raw`助手函数 * `mysql`支持`find_in_set`查询 * 改进`url`方法对自动多应用的支持