Skip to content

Releases: top-think/think

V6.0.6

11 Jan 02:41
Compare
Choose a tag to compare

兼容composer2 生成配置文件
优化optimize:schema指令
增加socket-log 的 curl 超时设置
修正路由匹配
兼容PHP8处理
增加汉字识别匹配范围 支持部分生僻字正则
改进响应文件请求时的缓冲清除
资源路由支持设置变量规则
$request->ip() 方法兼容PHP8
修复验证器in方法,between方法,使用数组,功能异常
修正含有__make的类实例化后未执行invokeAfter的问题
修复命令行创建中间件命名空间无效 bug

V5.1.41

11 Jan 03:00
Compare
Choose a tag to compare

兼容PHP8.0

V6.0.5

26 Oct 23:36
Compare
Choose a tag to compare

兼容Composer 2.0
修正验证类append方法
改进缓存标签机制
改进闭包路由内使用request对象
改进文件缓存驱动

V6.0.4

29 Sep 01:03
Compare
Choose a tag to compare

主要更新:

新增

[新增] 多语言支持解析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

25 Jun 02:49
Compare
Choose a tag to compare

本次更新包含一个调试模式的系统信息安全隐患修正,建议更新。

主要更新:

  • 异常提取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

21 Jan 10:57
Compare
Choose a tag to compare

本次更新包含一个可能的Session安全隐患修正,建议更新。

主要更新:

  • 改进设置方法后缀后的操作名获取问题
  • 修正optimize:schema指令
  • 修正Request类inputData处理
  • 改进中间件方法支持多个参数
  • 修正sessionid检查的一处隐患
  • 完善对15位身份证号码的校验
  • 增加远程多对多关联支持
  • 增加MongoDb的事务支持(mongodb版本V4.0+)
  • 改进insertAllreplace支持

V6.0.1

24 Dec 08:07
Compare
Choose a tag to compare

主要更新:

  • 完善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方法的查询

V5.1.40

09 Oct 07:40
Compare
Choose a tag to compare

改进redis驱动has方法
修正XA事务
修正HasManyThrough关联
增加mysql json类型字段->>方式获取支持
改进路由加载 避免加载编辑器临时文件影响
修复关联模型的属性直接附加到当前模型,当关联模型字段名为name时获取的值为模型的属性name值
修复多态关联预加载field无效
改进Collection类的column方法的PHP兼容性问题
改进mysql驱动
改进parseclosure方法
SoftDelete删除条件做空判断
改进验证类append方法

V5.1.39

17 Nov 23:25
Compare
Choose a tag to compare

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

  • 修正memcached驱动
  • 改进HasManyThrough关联查询
  • 改进RequestisJson方法
  • 改进关联查询
  • 改进redis驱动
  • 增加 Model类getWhere方法对复合主键的支持
  • 改进newQuery方法
  • 改进闭包查询的参数绑定
  • 修正Validate
  • 修复某些情况下URL会多一个冒号
  • 调整composer.json
  • 修复使用Cache::clear()时,报错缓存文件不存在问题
  • 使用File类的unlink方法进行文件删除
  • 改进paraseData方法
  • 修正image验证方法
  • 改进Url生成
  • 改进空操作对数字的支持
  • 改进一处PHP7.4兼容性问题

V6.0.0

24 Oct 02:08
Compare
Choose a tag to compare

官方历时一年多倾力打造的ThinkPHP6.0版本正式发布,该版本基于精简核心和统一用法两大原则在5.1的基础上对底层架构做了进一步的优化改进,并更加规范化。

由于引入了一些新特性,ThinkPHP6.0运行环境要求PHP7.1+(推荐PHP7.3+),不支持5.1的无缝升级(官方提供了升级指导)。

主要特性:

  • 采用PHP7强类型(严格模式)
  • 支持更多的PSR规范
  • 多应用支持
  • ORM组件独立
  • 改进的中间件机制
  • 核心架构服务化
  • 全新的事件系统
  • 容器功能增强
  • 模板引擎组件独立
  • 内部功能中间件化
  • SESSION机制改进
  • 缓存及日志支持多通道
  • 引入Filesystem组件
  • Swoole以及协程支持改进
  • 对IDE更加友好
  • 统一和精简大量用法

强类型及严格模式

在主流框架里面,ThinkPHP6.0是最先采用PHP7严格模式的。所有的核心文件都是开启了严格模式的类型约束,因此有任何的变量类型不符的情况都会抛出异常,有利于规范代码中的变量类型和提前发现问题隐患。

多应用模式

新版框架提供了多应用模式支持,默认安装为单应用,你只需要安装一个多应用模式扩展就可以更轻松的部署多个应用而不需要重复安装依赖组件,每个应用都支持独立入口访问以及域名绑定,也可以使用一个入口文件实现自动多应用部署。并且自动多应用模式支持智能识别,对于不存在的应用访问会自动切换到单应用模式进行匹配。同时支持应用的映射和禁止访问机制。

多应用模式的设计可以让开发更加模块化,因为每个应用的配置、路由及视图都可以纳入应用目录,所以更方便应用的模块化,甚至引入composer应用。

容器和服务

新版的容器支持PSR-11规范,容器类的功能特性主要包括:

  • 绑定类、对象实例、接口到容器
  • 创建类的实例(存在则直接获取)
  • 容器对象绑定别名
  • 支持容器对象(实例化)回调
  • 获取容器对象实例
  • 删除容器中的对象实例
  • 提供依赖注入和门面实现支持
  • 调用容器对象实例的方法(或者闭包)
  • 提供容器对象的ArrayAccess支持

事件系统

新版的事件系统可以看成是5.1版本行为系统的升级版,事件系统相比行为系统强大的地方在于事件本身可以是一个类,并且可以更好的支持事件订阅者。支持事件智能订阅,通过反射机制来识别当前订阅者要订阅的事件。

事件相比较中间件的优势是事件比中间件更加精准定位(或者说粒度更细),并且更适合一些业务场景的扩展。例如,我们通常会遇到用户注册或者登录后需要做一系列操作,通过事件系统可以做到不侵入原有代码完成登录的操作扩展,降低系统的耦合性的同时,也降低了BUG的可能性。

中间件支持完善

中间件分为全局中间件、应用中间件、路由中间件和控制器中间件,这四个中间件分组完全独立执行,但同一个分组内的中间件不会重复执行。中间件方法执行依赖注入,以及请求结束的回调机制。

核心很多功能都是基于中间件来完成,包括多应用模式也是采用中间件机制执行。

路由和请求

新版的路由精简了很多不必要的功能,路由定义也更加规范化和语义化,并且路由定义文件支持纳入应用目录,便于模块化开发。路由注解功能独立为think-annotation库,并且使用更加规范,支持IDE提示。

新版的请求对象更易扩展,系统默认安装后提供了一个app\Request类,你可以在应用中直接自定义请求对象,增加必要的属性和方法。但不会影响对think\Request的依赖注入和门面调用。

系统服务

由于核心框架采用了服务化设计,你可以在你的扩展或者应用中注册需要的服务。在系统服务中注册一个对象到容器,或者对某些对象进行相关的依赖注入。由于系统服务的执行优先级问题,可以确保相关组件在执行的时候已经完成相关依赖注入。一个服务类通常包括注册(register)和启动(boot)方法,用于不同阶段的执行。

ORM组件化

内置的ORM功能已经完全独立为think-orm组件,可以独立使用,ThinkPHP6.0默认依赖安装了该组件,保持用法不变的同时,增强了查询功能。

模板引擎组件化

核心不再内置任何模板引擎,仅提供PHP模板支持,官方的模板引擎已经独立为think-template模板引擎,并默认依赖安装。你可以更方便的使用第三方模板引擎。

日志系统

日志支持多通道、并统一命令行和WEB日志格式,主要包括:

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

Session机制改进

6.0版本的Session机制完全重写了,并且不再使用PHP内置的Session机制,全新实现一套Session机制,可以更好的支持Swoole/Workerman等环境。

所以不再支持PHP内置的session_*** 系列函数,也不再支持使用$_SESSION读取session数据,你必须通过框架提供的Session类或者门面来操作,Request类也封装了Session数据的读取。

Session支持跨应用读取和自定义序列化机制,默认采用文件类型记录Session数据,由于共用了缓存机制,你还可以使用任何支持的缓存类型来记录Session数据。

引入Filesystem组件

新版增加了Filesystem类库对文件系统强化了支持,而且可以很方便的支持各种云存储,包括阿里云和七牛云。

Swoole扩展改进

Swoole扩展同时支持HTTPSocket服务,支持数据库和缓存的连接池功能,以及RPC功能。

调试工具更新

原来内置的页面Trace调试工具已经更改为扩展的方式,改成安装think-trace扩展,如果通过composer安装应用的话,默认会安装topthink/think-trace扩展。

基本用法和之前保持不变,但无需额外配置,默认使用html方式显示,同时仍然支持浏览器控制台显示,并仅在调试模式下有效。

同时增加了一个基于debugbar的调试扩展think-debugbar,需要单独安装后才能使用。

composer require topthink/think-debugbar

统一和精简大量用法

新版对很多用法进行了精简和统一,尽可能避免在开发过程中规范不一的困惑。

开发手册

更多内容可以查看官方的完全开发手册