Open
Description
imi v2.1 是一个优秀的版本,经受住了众多项目实际生产环境的考验,已经十分可靠。
imi v3.0 正式提上日程,主要是升级依赖版本和解决一些旧版本中的设计问题,并且适当引入一些新特性。
开发的同时,v2.1 也会继续开发和支持,imi 的版本支持计划详见:https://doc.imiphp.com/v2.1/base/version/support.html。
imi v3.0 开发分支:3.0,提 PR 请选择这个分支!
文档:https://doc.imiphp.com/v3.0/
升级
- 环境版本升级,PHP >= 8.1,Swoole >= 5.0 [3.0] 升级框架核心依赖版本 #591
- 框架核心组件依赖版本升级为支持强类型的版本 [3.0] 升级框架核心依赖版本 #591
- [3.0] 更新开发工具集 #594
- [3.0] 升级 phpunit #607
- [3.0] 全面使用 PHP 8.1 强类型 #633
- imi-amqp 组件依赖版本升级 #[3.0] imi-amqp 改造 #595
- imi-apidoc 组件依赖版本升级 #611
- imi-grpc 组件依赖版本升级 #612
- imi-jwt 组件依赖版本升级 #613
- imi-roadrunner 组件依赖版本升级 #614
- imi-smarty 组件依赖版本升级 #615
- imi-snowflake 组件依赖版本升级 #616
新特性
- 迁移工具(imiphp/annotation-migration-tool)
- 引入连接中心代替旧的连接管理和连接池 #656
- 支持 Redis 多种驱动,引入 predis #618
- 模型字段增加
@getter
、@setter
注解,不用写方法 #619 - 模型字段值初始化处理、保存前处理、序列化处理 #620
改进
- [3.0] imi-amqp 改造 #595
- 重构注解类写法 #626
- 重构事件,基于类 PSR-14 的接口设计 #659
- 一些已经抛出异常,但返回值还定义为
bool
的方法,修改返回值类型为void -
ICursorResult
、IChunkResult
继承 IResult,方法抛出Unsupport异常 - gRPC 接收到错误数据不再返回
null
,而是抛出异常 - 统一枚举文件方法返回值,之前的版本失败时返回多种结果(空数组、false、ArrayIterator)
- 支持在 PointCut 中指定优先级 #685
- 模型生成命令取消参数,全部改为配置
- 模型大块注解拆分独立注解(序列化定义,创建时间与更新时间等)
- 增加并完善模型生成表事件 #684
- 关于优化Lock::lock的建议 #516
- 修复"生成的Model所继承的基类"参数问题 #498
- [3.0] 重构各个生成器,使用原生注解 #608
- 在imi3.0中建议增加框架命名的Exception #680
更改默认行为
废弃
- 废弃注释注解,全面拥抱原生注解 #623
- [3.0] 废弃 imi-access-control,移出主仓库 #597
- [3.0] 废弃 imi-macro,移出主仓库 #598
- [3.0] 废弃 imi-hprose #603
- [3.0] 废弃命名空间声明在
config.php
的写法,统一写到composer.json
的imi.namespace
#600 - [3.0] 废弃模型的一些不合理特性 #601
- [3.0] 不再使用BaseInjectValue作为注解属性值 #602
- v2.1 中已经标记为 deprecated 的在 v3.0 废弃 #624
- 移除旧的枚举,独立旧枚举组件 #617
以上不代表最终变动内容,还有一些想法需要仔细考虑后再贴上来。
需求列表随时会有改动,也欢迎大家提出更多好的想法~