imi v3.0 开发计划
Opened this issue · 1 comments
Yurunsoft commented
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 #591
- 框架核心组件依赖版本升级为支持强类型的版本 #591
- #594
- #607
- #633
- imi-amqp 组件依赖版本升级 ##595
- #611
- #612
- #613
- #614
- #615
- #616
新特性
改进
- #595
- #626
- #659
- 一些已经抛出异常,但返回值还定义为
bool
的方法,修改返回值类型为void -
ICursorResult
、IChunkResult
继承 IResult,方法抛出Unsupport异常 - gRPC 接收到错误数据不再返回
null
,而是抛出异常 - 统一枚举文件方法返回值,之前的版本失败时返回多种结果(空数组、false、ArrayIterator)
- #685
- 模型生成命令取消参数,全部改为配置
- 模型大块注解拆分独立注解(序列化定义,创建时间与更新时间等)
- #684
- #516
- #498
- #608
- #680
更改默认行为
废弃
以上不代表最终变动内容,还有一些想法需要仔细考虑后再贴上来。
需求列表随时会有改动,也欢迎大家提出更多好的想法~
NHZEX commented
关于模型生成命令配置的一个建议,定义起来比较灵活:
ps: 主要出发角度是老表和老架构迁移,能更灵活规划。
// 模型生成路径自动使用 Psr4 规范映射,确保命名空间都已经声明
return [
// 映射时默认继承基类
'baseClass' => \app\Model\Base::class,
// 映射时默认命名空间
'baseNamespace' => 'app\\Model',
// 映射时的默认连接,空表示使用db配置指定
'defaultConnect' => null,
// 生成文件是否使用严格类型
'strictTypes' => true,
'exclude' => [
'_phinxlog',
],
// 单个模型绑定跟踪
'single' => [
[
'table' => 'activity_log',
'class' => \app\Service\Auth\Record\RecordModel::class,
],
],
// 批量模型绑定跟踪
'mapping' => [
[
// 匹配指定表
'table' => [
'admin_*',
'user_role_*',
],
'namespace' => 'app\\Model\\Admin',
],
[
// 匹配指定表,空代表任意表
'table' => null,
// 模型映射关联的连接
'connect' => 'cat',
// 模型映射使用的命名空间
'namespace' => 'app\\CatApp\\Model',
// 模型映射指定继承基类
'baseClass' => \app\CatApp\Model\CatBase::class,
],
],
];