2

3fe596f01f46a20ddbb324ed62600527a4e.jpg

imi 是基于 PHP 协程应用开发框架,它支持 HttpApi、WebSocket、TCP、UDP 应用开发。

由 Swoole 提供强力驱动,Swoole 拥有常驻内存、协程非阻塞 IO 等特性。

框架遵守 PSR 标准规范,提供 AOP、注解、连接池、请求上下文管理、ORM模型等常用组件。

imi 的模型支持关联关系的定义,增删改查一把梭!

毫秒级的注解及代码热更新,让你在开发时只管一把梭,体验与 fpm 下开发并无二致,保存就刷新,立马看到效果。

与其他专注微服务领域的 Swoole 框架不同,imi 专注单体应用开发。原因很简单:大部分公司都不需要上微服务,单体应用足矣。

imi 框架第一个版本 v0.0.1 首发于 2018 年 6 月 21 日

测试用例持续完善中,目前有 177 个测试,733 个断言。

更新日志

imi 成为首个使用木兰宽松许可证的 Swoole 框架,宇润此次修改开源协议的理由是:

首先,木兰宽松是中国第一个自己的开源协议。木兰宽松比 imi 之前使用的 Apache V2 更加自由,更加符合实际。最后,即便别人侵权,你想要通过法律途径维权成本很高,基本都是不了了之。所以选什么协议都一样了,支持国产!

增强

  • 开源协议从 Apache V2 切换为 木兰宽松许可证(Mulan PSL v1) ,更加自由!
  • 增加自定义 SessionId 获取方式的测试用例(感谢 @loyating
  • View 注解的 template 为空时默认使用当前方法名
  • 新增 ImiUtilFile::isEmptyDir() 方法,判断目录是否为空
  • 新增 InEnum 验证注解,用于验证值是否存在于枚举列表中
  • Request 对象增加 request()、hasRequest() 方法,request 数据包含 get/post/cookie
  • 新增验证类测试用例
  • 新增自动验证注解测试用例

修复

  • 修复 ConnectContextRedis 导致进程阻塞的问题
  • 修复 WebSocket 热重启后无法握手问题
  • 修复使用 vendor/bin/imi 无法启动项目问题

优化

  • 将 IMI 文字描述大写全部改为小写 imi
  • 增加 HttpServer 测试用例的请求日志记录
  • WS 请求测试后将 YurunHttp Handler 切换为 Curl
  • 重构 ViewHandler
  • 增加测试脚本配置和运行说明,测试用例中的 MySQL、Redis 的配置,都可以通过系统环境变量配置

开始使用

创建 Http Server 项目:composer create-project imiphp/project-http

创建 WebSocket Server 项目:composer create-project imiphp/project-websocket

创建 TCP Server 项目:composer create-project imiphp/project-tcp

创建 UDP Server 项目:composer create-project imiphp/project-udp

完全开发手册

联系我们

Github 反馈:https://github.com/Yurunsoft/...

码云仓库:https://gitee.com/yurunsoft/IMI

Segmentfault 提问:https://segmentfault.com/

开源中国 问答:https://www.oschina.net/question

QQ群交流:17916227 点击加群


宇润
768 声望51 粉丝

imi 框架创始人、Swoole 开发组成员、php-src 内核贡献者、TDengine 贡献者、2021 中国开源码力榜前百名。