更新日志

V6.0.9(2021年07月22日)

本版本主要添加了事件监听的通配符支持,并修正了框架的一处可能的序列化漏洞,同时对模型做了一些改进和优化。

  • 更新league/flysystem版本
  • 事件监听支持通配符
  • 支持时间字段的统一配置
  • 改进Requestall方法

由于league/flysystem低版本存在漏洞,官方进行了安全升级,该修正使得框架的PHP版本依赖也提升到7.2+

ThinkORM主要更新如下:

  • 强化虚拟模型支持
  • 改进模型事件和数据库事件
  • 改进动态获取器处理
  • 优化分页查询
  • 改进聚合查询
  • 关联增加withoutField方法
  • 软删除destroy方法优化

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
  • 修复验证器inbetween方法,使用数组,功能异常
  • 修正含有__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类增加getForeignKeygetLocalKey方法

修正

  • [修正] 修复规则为空的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
  • 修正文件上传类
  • 取消EventwithEvent方法
  • 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指令
  • 修正RequestinputData处理
  • 改进中间件方法支持传多个参数
  • 修正sessionid检查的一处隐患
  • 完善对15位身份证号码的校验
  • 增加远程多对多关联支持
  • 增加MongoDb的事务支持(mongodb版本V4.0+)
  • 改进insertAllreplace支持

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方法
  • 改进模型更新条件获取
  • 修正使用模型对象更改数据时忽略自定义的suffixconnection参数
  • 修正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
  • 改进关联定义对查询构造器的支持
  • 关联类增加withFieldwithLimit方法,并取消QuerywithField方法
  • 增加延迟关联查询对withLimit的支持
  • 改进模型toArray方法
  • 改进Url生成的域名参数
  • 改进 make:command指令生成
  • 缓存有效期支持DateInterval
  • 改进Query类find方法
  • 改进json查询
  • 改进查询缓存
  • 增加filesystem组件
  • 改进跨域请求
  • 改进路由检测缓存配置
  • 改进注解路由的文件写入
  • 路由注册支持注册options请求类型
  • 改进重定向路由检测
  • 改进模型的hasWhere方法对闭包查询条件的支持完善
  • 增加time_query_rule数据库配置参数 用于自定义时间查询规则
  • 改进时间字段类型的自动识别
  • 改进redis驱动
  • 容器对象增加invoke回调机制
  • 改进多对多关联
  • 资源路由增加withModelwithValidate对各个路由设置不同的模型绑定和验证
  • 改进getLastInsID方法
  • 日志类调整 支持多通道写入
  • 改进模型输出
  • 支持单独关闭某个通道的日志写入
  • 取消部署模式下 不写入调试日志的功能 用调试级别设置单独的日志渠道来替代
  • 改进日志记录格式
  • 支持日志输出格式化
  • 改进资源路由
  • 改进命令行日志实时写入
  • 日志通道支持单独设置level配置参数
  • Log类调整优化
  • 增加paginateX查询用于大数据分页查询
  • 数据集增加firstlast方法
  • 改进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类的initconnect方法取消 并入store方法
  • cache助手函数调整
  • cache助手函数取消初始化用法
  • cache助手函数留空返回Cache对象
  • 调整调试模式检测位置
  • 默认时间字段类型改为timestamp
  • 取消Model类getConnectionsetConnection方法
  • 注解路由移出核心,注解相关功能使用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助手函数调整支持输出多个变量
  • 关联自动更新
  • 模型数据集增加deleteupdate方法
  • 模型支持表后缀以及动态切换
  • 注解路由支持给某个路由指定所属分组
  • 多语言支持分组定义
  • 支持自定义加载语言文件
  • 多语言定义支持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指令
  • 修正Collectionload方法
  • 修正redis驱动的端口类型
  • 修正session数据序列化使用JSON处理的问题
  • 修正分组路由合并解析
  • 修正模型的hidden方法隐藏关联模型的问题
  • 修正关联查询关联键为空的错误
  • 修正返回204状态码的响应判断
  • 修正Requesthas方法对envsession的支持
  • 修正provider.php文件无效问题
  • 修正关联查询的部分问题
  • 修正validate助手函数支持指定验证器类
  • 修正验证类getValidateType方法
  • 修正入口单独开启调试模式
  • 修正加载Composer应用

用法调整

  • 页面trace中间件仅在调试模式有效
  • Socket日志驱动移出核心
  • PostgreSQLSqliteSqlServer驱动移出核心 ,改为扩展
  • 取消内置think\Controller基类
  • Yaconf支持移出核心 纳入扩展think-yaconf
  • 字段排除改为withoutField方法
  • 取消useGlobalScope方法增加withoutGlobalScope方法
  • 更改默认生成的中间件位置
  • 加载默认语言包无需开启多语言中间件
  • Cookie类恢复gethas方法支持
  • token助手函数调整
  • 全局请求缓存参数调整
  • 统一中间件调用传参,不支持:分割传参
  • 缓存数据统一进行序列化后存储
  • Cache类rm方法更改为delete方法
  • validate助手函数返回Validate对象实例,参数改变

废弃用法

  • 取消多语言的auto_detect配置
  • 取消session类的auto_start配置参数和boot方法
  • 废弃Where数组对象查询
  • 取消模型事件观察者
  • 取消JumpResponsesuccess/error/result等方法和助手函数
  • 取消表达式查询解析扩展及think\db\Expression
  • 废弃模型自动完成功能,使用模型事件替代
  • 取消cookieprefix参数
  • 取消一系列不推荐使用的助手函数
  • 取消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语法
  • 修正Eventbind属性定义
  • 修正验证类的append一处bug
  • 改进Queryupdate方法支持读取模型的更新条件
  • 取消模型类的getUpdateWhere方法统一使用getWhere方法
  • 改进query类的fetchArray方法处理
  • 改进路由类取消app属性
  • 增加think\facade\RuleName
  • 增加whereFieldRaw查询方法
  • 改进自动多应用名称获取
  • App类增加withEvent方法支持关闭事件机制
  • 改进Dispatch类对var_dump的支持
  • 改进hasManywithCount自关联
  • 修正纯数字检测参数类型转换问题
  • 修正raw助手函数
  • mysql支持find_in_set查询
  • 改进url方法对自动多应用的支持