Skip to content

Releases: top-think/think

V5.1.38

16 Aug 08:15
Compare
Choose a tag to compare

本次更新为常规更新,主要包括:

  • Request类增加isJson方法
  • 改进浮点型查询
  • 修正关联查询关联外键为空的查询错误
  • 远程一对多支持关联统计和预载入查询
  • 远程一对多关联支持has/hasWhere查询
  • 优化parseIn解析
  • 改进parseLike查询
  • 改进Url生成
  • 改进模型的toArray方法
  • 修正notIn查询
  • 改进JSON字段查询
  • 改进Controller类display/fetch方法返回ViewResponse对象
  • 改进param方法
  • 改进mysql驱动getExplain方法
  • 改进时间查询
  • 改进模型关联的has/hasWhere方法对软删除的支持

V6.0.0RC4

16 Aug 08:13
Compare
Choose a tag to compare
V6.0.0RC4 Pre-release
Pre-release

RC4版本主要改进包括ORM库独立,日志系统增加多通道支持,缓存、日志、数据库的配置文件统一调整为多通道模式。

本次更新相对于RC3版本主要涉及配置文件的更新,其它调整参考更新日志的用法调整部分。

主要新特性

数据库和模型改为独立的think-orm

数据库和模型操作核心不再内置,改为统一依赖topthink/think-orm库(该类库已经包括其它的数据库驱动),用法保持一致,功能也没有任何的缺失。

此前think-orm库已经独立更新维护,但一直是同步核心的ORM,2.0版本进行了架构调整,保持独立性的同时支持框架依赖,以后数据库操作这块统一在此类库更新。

模型功能增强

对模型做了大量的功能改进,主要包括:

  • 关联类增加withFieldwithLimit方法
  • 改进模型的hasWhere方法对闭包查询条件的支持完善
  • 支持has/hasWhere的多次调用
  • 模型的has/hasWhere方法支持软删除
  • 增加远程一对一关联
  • 远程一对一和一对多支持预载入及has/hasWhere查询
  • 模型类支持序列化及缓存操作
  • 关联预载入查询支持缓存
  • 模型方法支持依赖注入
  • 模型事件改进支持系统事件系统

日志支持多通道、并统一命令行和WEB日志格式

此次更新对日志类做了较大的调整和增强,主要包括:

  • 日志增加多通道支持,可以同时或者切换写入多个通道
  • WEB和CLI的日志记录格式统一,并支持日志格式化
  • 对JSON日志格式的改进
  • 支持日志写入事件

增加Filesystem组件

Filesystem组件用以替代之前的上传类,提供了更多上传到远端的扩展库支持。

容器对象增加回调机制

容器中的对象实例化之后,引入回调机制,利用该机制可以实现诸如注解功能等相关功能。

你可以通过resolving方法注册一个全局回调

Container::getInstance()->resolving(function($instance,$container) {
    // ...
});

回调方法支持两个参数,第一个参数是容器对象实例,第二个参数是容器实例本身。

或者单独注册一个某个容器对象的回调

Container::getInstance()->resolving(\think\Cache::class,function($instance,$container) {
    // ...
});

路由注解独立为think-annotation

路由注解功能独立为think-annotation库,并且使用更加规范,支持IDE提示。

多应用模式下路由定义支持纳入应用目录

在多应用模式下,路由定义文件支持放入应用目录的route目录下。

模板根目录默认放入根目录下的view目录

模板根目录默认从应用目录下移动到根目录的view目录,如果是多应用模式的话,下面是应用子目录,如果你需要改回放入原先的应用目录下,可以在应用的template配置文件中定义view_path

'view_path'    =>    app_path('view'),

更新日志

功能改进

  • 改进路由类的配置读取
  • 改进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对象
  • 默认时间字段类型改为timestamp
  • 注解路由移出核心,注解相关功能使用topthink/think-annotation
  • 改进路由 取消url_convert配置参数
  • 取消route:build指令
  • 调整默认模板目录为根目录view
  • 取消默认的请求日志记录 在项目里面自己添加
  • 统一find查询必须使用查询条件
  • 扩展的service配置文件默认放到vendor目录下
  • 废除LogLevel事件
  • 取消App类的序列化方法
  • 控制台的user配置改为通过静态方法设置当前执行用户

V6.0.0RC3

03 Jun 08:31
Compare
Choose a tag to compare
V6.0.0RC3 Pre-release
Pre-release

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 方法

V5.1.37

24 May 04:24
Compare
Choose a tag to compare

本次更新为常规更新,主要更新如下:

  • 改进关联数据更新
  • 修正关联动态获取器
  • 改进redis驱动
  • 修复验证规则里面出现二维数组时的错误
  • 改进跨域请求支持
  • 完善模型hidden方法对关联属性的支持
  • 改进where查询方法传入Query对象的支持bind数据
  • 改进数据集对象的load方法
  • 修正关联更新

V5.1.36

28 Apr 10:44
Compare
Choose a tag to compare

本次更新为常规更新,主要更新如下:

  • 修正chunk方法一处异常抛出的错误
  • 修正模型输出的visible
  • 改进环境变量加载
  • 改进命令行日志的level配置支持
  • 修复设置有缓存前缀时,无法清空缓存标签的问题
  • HasMany关联类saveAll方法兼容Collection格式参数格式
  • 修正whereOr查询使用字符串的问题
  • 改进dateFormat设置对写入数据的影响
  • 修正查询缓存
  • 记住指定的跳转地址
  • 改进软删除
  • 改进聚合查询SQL去除limit限制
  • 改进缓存驱动

V5.1.35

03 Mar 00:55
Compare
Choose a tag to compare

本次主要为常规更新,修正了一些反馈的问题。

  • 修正验证类自定义验证方法执行两次的问题
  • 模型增加isEmpty方法用于判断是否空模型
  • 改进获取器对append的支持
  • 修正一对多关联的withCount自关联问题
  • facade类注释调整
  • 改进关联属性的visiblehidden判断
  • 修正路由分组的MISS路由
  • 改进pgsql.sql

V5.1.34

30 Jan 06:56
Compare
Choose a tag to compare

本次更新为常规更新,修正了一些反馈的问题。

  • 改进Request类的has方法,支持patch
  • 改进unique验证的多条件支持
  • 修复自定义上传验证,检测文件大小
  • 改进in查询支持表达式
  • 改进路由的getBind方法
  • 改进验证类的错误信息获取
  • 改进response助手函数默认值
  • 修正mysql的regexp查询
  • 改进模型类型强制转换写入对Expression对象的支持

V5.0.24

11 Jan 08:12
Compare
Choose a tag to compare

本次更新包含了一个安全更新,建议更新

  • 改进关联的save方法
  • 改进模型数据验证
  • Collection增加values方法
  • 改进unique验证方法
  • 改进Request类的method方法

V5.1.32

23 Dec 14:34
Compare
Choose a tag to compare

本次主要为常规更新,修正了一些反馈的问题。

主要更新日志:

  • 改进多对多关联的attach方法
  • 改进聚合查询的field处理
  • 改进关联的save方法
  • 修正模型exists方法返回值
  • 改进时间字段写入和输出
  • 改进控制器中间件的调用
  • 改进路由变量替换的性能
  • 改进缓存标签的处理机制

V5.1.31

10 Dec 06:56
Compare
Choose a tag to compare

本次版本包含一个安全更新,建议升级。

  • 改进field方法
  • 改进count方法返回类型
  • download函数增加在浏览器中显示文件功能
  • 修正多对多模型的中间表数据写入
  • 改进sqlsrv驱动支持多个Schemas模式查询
  • 统一助手函数与\think\response\Download函数文件过期时间
  • 完善关联模型的save方法 增加make方法仅创建对象不保存
  • 修改条件表达式对静态变量的支持
  • 修正控制器名获取
  • 改进view方法的field解析