imiphp/imi

imi v3.0 开发计划

Opened this issue · 1 comments

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/

升级

新特性

改进

  • #595
  • #626
  • #659
  • 一些已经抛出异常,但返回值还定义为 bool 的方法,修改返回值类型为void
  • ICursorResultIChunkResult 继承 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,
        ],
    ],
];