Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

imi v2 版本最新规划及动态 #66

Closed
24 tasks done
Yurunsoft opened this issue Sep 14, 2020 · 14 comments
Closed
24 tasks done

imi v2 版本最新规划及动态 #66

Yurunsoft opened this issue Sep 14, 2020 · 14 comments

Comments

@Yurunsoft
Copy link
Member

Yurunsoft commented Sep 14, 2020

目前 imi v2 版本已经开始开发了(2020-09),v1 版本进入维护期,仅修复问题不再加入新特性。如果有任何问题,欢迎联系我们!

imi v2 主打:(保密),高性能,次世代

由于代码这东西,总是看以前写的代码不爽,所以会做一些底层重构(CURD 不影响),工作量还挺大的……

目前 v2 版本代码还在私有仓库,等到时机成熟会开源到本仓库中。

设计思路

  • 废除 v1 中不合理、写法啰嗦的地方,简化配置,imi 让开发项目一把梭的理念从未改变
  • 将一些功能,交给更加成熟的第三方包,imi 有它自己的使命

新特性:

  • PHP >= 7.4 && Swoole >= 4.6
  • PSR-7 基础上增加 setXXX 方式,会保留 withXXX并完全兼容 PSR-7(withXXX 就是个大坑,用起来束手束脚,大量没意义的clone影响性能)
  • 项目的 Main 类改为非必选
  • 配置项 @app.components 移除,不再需要填写
  • 配置项 @app.beanScan 改为非必填,默认扫描全部文件
  • 支持 PHP 8.0 原生注解(原注释写法依旧支持)
  • 神秘新特性
  • 长连接服务分布式解决方案
  • imi-xxx 系列组件更新兼容

重构

  • 全部使用强类型、严格模式开发,保证代码质量
  • 重构优化框架加载流程,条理更加清晰
  • 连接池、缓存驱动、锁管理,同时支持懒加载和常驻内存预加载
  • 运行时缓存机制重构
  • 修改一些类的命名空间,以更加合理的方式命名
  • 命令行包改用symfony/console
  • 日志组件改用 monolog/monolog

其它

  • 引入代码格式检测
  • 引入代码静态检测
  • 官方组件集中在主仓库进行开发和管理,实现自动推送到对应子仓库以更新 Composer
  • 组织迁移,将 Yurunsoft/imi 仓库迁移至 imiphp/imi
  • 文档编写完善
  • 准备 imi v2 发布介绍视频
  • 录制 imi v2 发布介绍视频
  • 剪辑 imi v2 发布介绍视频

本页面持续更新,敬请关注!

@Yurunsoft Yurunsoft changed the title imi v2 版本相关 imi v2 版本最新规划及动态 Sep 14, 2020
@Yurunsoft Yurunsoft pinned this issue Sep 14, 2020
@ftlh2005
Copy link

加油干

@azhuang321
Copy link

加油大神

@Maoxp
Copy link

Maoxp commented Sep 18, 2020

等我能看懂你的代码了,大佬就后继有人了

@pizriw
Copy link
Contributor

pizriw commented Sep 20, 2020

加油

@foxhunter
Copy link

继续一把梭

@lovefc lovefc unpinned this issue Nov 4, 2020
@Mjc960512
Copy link
Contributor

一把梭现在还差一个微信开发的包,如果有微信开发的包,毕竟做微信开发的太多太多了,如果有那就更好了

@Yurunsoft
Copy link
Member Author

一把梭现在还差一个微信开发的包,如果有微信开发的包,毕竟做微信开发的太多太多了,如果有那就更好了

https://github.com/overtrue/wechat

@windylaugit
Copy link

提个建议: imi v2 建议增加一套 用于DB层、微服务层 等的快捷注解模块。(从java-express大型项目参考而来),代码效果类似以下:
一、DB层相关注解写法(伪代码,下同):

// 某个DB层的微服务类
class SomeDbService {
   // 在DB层服务类内部靠前部分统一书写SQL
   const String QUERY_SQL = "SELECT * FROM e_some_table WHERE id=:id,status IN(:statusList)";

  // 该微服务向外暴露方法,以条件对象为入参,换取结果。外部不关心具体DB的内核如何实现。
  @Query(QUERY_SQL)
  List<SomePO> getList(SomeQO qo); 

}

// 某个微服务的接口类, 根据不同的业务架构,可能有method的方式,也可能有通过pathRoute的方式,推荐method

@Service({ methodPre=“xxx.xxx.xxx”, path="/api/route/rest/someModule/someApi/someFunc.json" })
class SomeApiServie {
   // 注入DB层服务
   @Inject
   private SomeDbService dbService;
   
   // 对外公开的接口方法, 也可以省略注解,默认情况Service所有的public方法均公开。
   @ServiceMethod({ name = "getList" })
   public List<SomeDTO> getSomeList (SomeQO qo) {
      // 这里我偷下懒,用伪代码大概表示下 数据转换。
      return this.dbService.getList(qo).map(po => dto);
   }
}

/************************************ 华丽分割 ***************************************/
以上伪代码,只是个人从项目开发经验出发提出的期望,存在不少超出底层框架应该做的事情, 但这里是个人的一个想法建议,期望大佬V2版本里,能略参考下我的这个想法,能从框架层面尽可能的 提供 实现方面的支持, 比如DB层框架提供原生SQL注解,开发人员也能继承去扩展实现等。

期待V2, 祝 越来越好。

@NHZEX
Copy link
Member

NHZEX commented Jan 26, 2021

神秘新特性难道是在php7.xphp8.x的官方注解?

@Yurunsoft
Copy link
Member Author

Yurunsoft commented Jan 26, 2021

神秘新特性难道是在php7.xphp8.x的官方注解?

你想多了,PHP 8.0 的注解真的丑,暂时不会考虑去支持……

打脸了,已经支持 PHP 8.0 原生注解(原注释写法依旧支持)

@Mjc960512
Copy link
Contributor

还是强烈建议查询关联的时候可以单独指定条件,给一个查询器where,page,order,limit,参考laravel,tp等框架的关联预加载

@Yurunsoft
Copy link
Member Author

一切准备就绪,只等良辰吉日吉时的到来。
永远相信美好的事情即将发生~

@hjb0924
Copy link

hjb0924 commented Jul 30, 2021

坐等发布

@Yurunsoft
Copy link
Member Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

10 participants