ThinkPHP8.1.4版本发布——兼容PHP8.5及多项优化
流年 · 4周前
本次更新带来了核心框架和ORM的多项功能改进和问题修复,兼容PHP8.5版本,并进一步提升了框架的稳定性和开发体验。同时也给2025年的工作划上了一个完美的句号,期待新的一年更多的新特性。
## 核心更新
### 🚀 核心功能增强
1. **Config类优化**
* 改进hook方法,增加key参数支持
* 调整lazy方法实现,提升配置加载效率
2. **路由系统改进**
* 修正路由URL生成逻辑
* 路由绑定到命名空间支持控制器后缀
* 改进路由分组的URL有效性检查
* 优化路由中间件传参机制
3. **请求响应优化**
* 改进Request类功能
* 增强Response类send方法的异常处理能力
* 改进HttpEnd错误日志记录
### 🔧 兼容性与性能
1. **PHP兼容性**
* 全面兼容PHP8.5版本
* 调整"psr/http-message"依赖,增加"^2.0"支持
2. **缓存与日志**
* 改进Redis缓存驱动性能
* 优化日志文件删除顺序
* 提升日志处理效率
### 🛠️ 开发工具增强
1. **新增命令行工具**
* 新增 `optimize` 命令,提供更多优化选项
2. **代码质量**
* 优化 PHP CS Fixer 配置规则
* 提升代码规范性和可维护性
## ORM更新
### 同时我们也给ThinkORM4.0带来了大量的优化和改进。
### 性能优化
* 引入`LazyCollection`惰性数据集,大幅减少内存占用
* `chunk`
方法使用`lazy`重写,提升大数据量处理性能
* 关联预载入查询使用`cursor`减少内存开销
* 改进lazy方法对`distinct`的处理
* 改进toarray方法的`append`处理,支持`relation.attr`方式
* 优化Json字段解析效率
* `LazyCollection`
类增加`page`方法简化数据处理
* 改进`cursor`方法支持关联查询
* 改进关联预载入查询的`limit`方法
* 优化PDOConnection类`query`和`execute`方法,不依赖Query
### 视图模型功能完善
* 完整的视图模型生命周期支持(查询、验证、写入)
* 支持自动关联查询和写入
* 独立的查询范围和搜索器
* JSON字段映射和类型转换
* 视图模型支持`update`和`create`方法调用并返回当前视图模型
* 视图模型增加`clear`、`reflesh`、`validate`、`data`等方法
* 视图模型默认支持写入,除非`readonly`为true(原`allowWrite`参数废弃)
* 改进视图模型的自动关联查询,不依赖`autoMapping`定义,会自动检测关联映射
* 优化视图模型的查询条件处理,可以自动根据视图模型的属性查询,会自动关联查询
* 视图模型查询排序字段支持映射
* 改进视图模型多级子关联映射问题
* 改进视图模型的嵌套关联数据写入
* 改进视图模型的获取器调用
* 改进视图模型支持基础类参数定义
* 改进视图模型的`data`方法支持原有属性和传入对象
* 改进视图模型的一对多关联写入
* 改进视图模型的`create`、`update`、`save`、`saveAll`等方法
* 改进视图模型的自动数据验证,支持字段映射
* 视图模型增加`validate_mapping_data`配置,用于设置是否验证映射后的数据
### 数据库连接增强
* `connect`
方法支持数组配置
* 数据库驱动增加时区设置,统一使用`timezone`参数配置
* PostgreSQL驱动完善,使用标准系统表查询字段信息
* 完善`pgsql`驱动支持获取字段注解内容
* 增加`after_connect`事件
* 数据库`numberic`类型视为字符串类型处理
### 关联查询功能增强
* 一对多关联增加`first`和`last`方法
* 一对一关联增加`firstOfMany`和`lastOfMany`方法
* 改进`hasWhere`查询条件支持更多的数组用法
* 改进关联写入支持JSON字段映射
* 修正`belongsTo`关联的`hasWhere`方法
### 模型功能增强
* 模型增加`scene`方法,用于设置自动验证的场景
* 模型和实体模型增加基础配置定义方法`getBaseOptions()`
* 模型增加`setAttrs`、`getAutoInc`等方法
* 改进模型的`suffix`方法调用处理
* 调整`getPk`方法支持没有主键的表
* 模型类和数据集对象增加`toView`方法
* 改进`autoWriteData`方法对于手动写入的自动写入时间字段不再生成
* 改进模型的`destory`方法增加`together`参数
* 改进Model类`get`方法
* 改进Model类`__isset`、`__unset`、`__unserialize`方法
* 去掉Model类的`autoinc`处理
* 改进实体模型和视图模型的`newInstance`和`setModel`方法
* 改进视图模型的`clone`、`refresh`方法
* 改进视图模型的查询字段自动识别
### 查询功能改进
* 增加`lazy`惰性查询方法
* 优化预载入关联查询使用`lazy`方法
* 增加`stream`流式处理方法,支持流式回调
* 改进`hasWhere`的查询条件,支持更多的数组用法
* 改进join查询方法的多次调用
* 改进`parserOrder`方法支持json字段排序
* 改进`getOrigin`方法增加类型转换参数
### 问题修复
* 修正`DateTime`类关闭时间格式化后的问题,支持写入null
* 修正软删除功能
* 修正`chunk`方法主键不存在的情况查询出错问题
* 修正OptimLock的`getDbWhere`方法参数默认值
* 修正`order`方法传数组的别名问题
* 修复`chunk`查询中断问题
* 修复`mongo`游标查询问题
* 修正修改器的data参数
* 改进`update`方法的刷新数据
## 安装与升级
### 全新安装
```
composer create-project topthink/think tp
```
### 升级现有项目
```
composer update topthink/framework
```
## 注意事项
1. 本次更新为常规维护版本,保持向下兼容
2. 建议在测试环境中验证后再部署到生产环境
3. 如遇到任何问题,请访问官方文档或提交Issue
## 致谢
感谢所有为ThinkPHP贡献代码的Tper们!是你们的支持让ThinkPHP框架不断进步,让开发变得更简单一直都是我们秉承的原则,官方计划在下一个版本引入一些更激动人心和增加开发体验的新特性。
***
**官方资源**
* 官方网站:https://www.thinkphp.cn
* GitHub仓库:https://github.com/top-think/framework
* 文档中心:https://doc.thinkphp.cn
* 社区论坛:https://bbs.thinkphp.cn
* 官方智能体:https://chat.topthink.com
<br>
推荐资讯
-
ThinkChat3.0新版内测——为企业量身定制的超级智能体
2026年02月11日
-
保持初心,一起拥抱AI时代——聊聊ThinkPHP的2026和未来
2026年01月30日
-
ThinkPHP8.1.4版本发布——兼容PHP8.5及多项优化
2026年01月16日
-
你和专业文档手册之间,只差一个“录制”按钮
2025年11月12日
-
客服团队的效率革命:培训文档制作时间立省80%,告别无效内耗
2025年11月12日
最新资讯
-
ThinkChat3.0新版内测——为企业量身定制的超级智能体
2026年02月11日
-
保持初心,一起拥抱AI时代——聊聊ThinkPHP的2026和未来
2026年01月30日
-
ThinkPHP8.1.4版本发布——兼容PHP8.5及多项优化
2026年01月16日
-
你和专业文档手册之间,只差一个“录制”按钮
2025年11月12日
-
客服团队的效率革命:培训文档制作时间立省80%,告别无效内耗
2025年11月12日