Skip to content

Releases: imiphp/imi

v1.1.2

20 Mar 07:21
Compare
Choose a tag to compare

Swoole 官方问答平台已经上线,有关 imi、Swoole 相关的问题,都可以去这边提问:https://wenda.swoole.com/

增强

  • 上传文件获取tmpFileName #50

优化

  • 模型生成中,将 double 改为 float,php 中没有 double 类型

修复

  • 修复 WebSocket 和 Http 共用端口时会有 notice 级别信息的问题

  • 修复 #51 定时任务分钟数、秒数设置超过59n会报错的问题

  • 修复一些问题

v1.1.1

06 Mar 05:15
Compare
Choose a tag to compare

增强

  • 新增数据库查询器加锁操作

  • 支持在 WebSocket 服务器中处理 http 请求

修复

  • 修复 Redis 模型的 find/select 方法返回的对象,可能没有 key 的问题

  • 修复路由设定 domain 参数时,第二次访问有 warning 的问题

重磅推出 Partial 概念!!!

28 Feb 06:20
Compare
Choose a tag to compare

这两周依然远程办公,忙于各种项目。这周更新的 Partial 很强大实用,可以看下的。

imi 视频教程已更新到第九集《模型和ORM》:https://www.bilibili.com/video/av78158909/

更新内容

增强

  • 新增 Partial 概念 (文档)

  • 树形模型新增支持注解设定主键字段 (文档)

优化

  • 优化 Redis 连接池资源类

  • 优化 Redis 连接池密码判断,现在为空字符串时,不会尝试密码登录

  • 优化树形模型代码

  • 优化热更新进程逻辑

修复

  • 修复 Inotify 热更新目录不存在报错问题

Partial

imi 的 Partial 思想是从 C# 中借鉴而来。Partial 可以将一个类的部分,分成几个文件,分别书写。

截止目前最新的 PHP 7.4 版本,还未在语言层面上支持 Partial 特性。

但依赖于 imi 强大的容器对象,终于在 PHP 中实现了 Partial 特性。

使用非常简单,使用 trait 编写,加上 @Partial 注解,可以方便地注入。

Partial 使用场景

  • 多人协作开发,修改同一个类文件难免有冲突。如果事先定义好接口,将不同方法分配给几个人开发,每个人只需要在自己的文件中编写,不用担心冲突问题。

  • 类的方法特别多,并且无法很好地拆分。这时候分到几个文件中,会相对比较好维护一些。

  • 有一些类是通过工具生成的,如果我们在类里编写了自己的代码,又需要重新工具生成一些内容,这时候会覆盖我们编写的代码。使用 Partial 在另一个文件开发,不会被覆盖掉。

Partial 概念引入 imi 框架前,imi 的模型生成工具将生成代码放在父类,用户在子类中编写代码。

值得更新

14 Feb 08:14
Compare
Choose a tag to compare

在家办公第一周,很快就忙了起来……

这周又有许多用户涌入 imi,每一次使用、反馈、贡献,都是在为 imi 添砖加瓦,更上一层楼。

相信,imi 会越来越好用,越来越强大!

增强

  • Text 注解支持字符验证 #46 文档

  • 新增一个控制器方法 __render(),用于优化页面渲染开发体验 文档

  • 定时任务支持设定,每次启动服务强制执行,Cron 注解的 force 设为 true 即可 文档

优化

  • 移除一处 try 语句

  • 移除使用 eval() 函数,引入一个安全替代方法 文档

  • 优化日志 Console 驱动输出

  • 调整 .env 加载时机,在配置文件中支持使用 getenv()、imiGetEnv() 函数获取 #41 文档

修复

  • 修复模型 bit 类型字段,在部分场景下的属性值转换问题

  • 修复模型保存后事件的参数类错误问题

  • 修复项目在特殊路径下启动报错问题

  • 修复 SQL 报错会出现 “Call to a member function closeCursor() on null” 错误的问题

  • 修复模型批量更新方法中,自定义连接池名不生效的问题

  • 修复模型注解设置 poolName 不生效问题 #40

  • 修复模型生成工具的 poolName 参数值,没有生成到 Table 注解里的问题 #38

立春!春回大地,万物复苏!

04 Feb 03:27
Compare
Choose a tag to compare

增强

  • 新增 Imi::getNamespacePaths() 获取所有命名空间路径的可能性

  • 新增 File::absolute(),相比 realpath() 函数,在文件不存在时也可以有效

  • 支持加载项目命名空间映射为多个目录情况下的 .env 配置文件

  • 跨域中间件 OptionsMiddleware 支持多个 allowOrigin

优化

  • 优化命名空间指向多个目录的场景

修复

  • 修复随 Manager 启动进程别名问题

  • 修复协程上下文的响应代理类问题

新增本地连接上下文存储处理器

17 Jan 05:36
Compare
Choose a tag to compare

准备欢度春节(划水),春节前最后一个版本,放完假恢复更新

  • 新增本地连接上下文存储处理器:ConnectContextLocal,可用于 SWOOLE_BASE 模式

  • 新增 ElasticSearch 文档

  • 尝试修复一个问题

  • 修复 DEPRECATED 提示

周常迭代

10 Jan 08:12
Compare
Choose a tag to compare
  • 运行时目录路径默认识别失败时抛出异常提示

  • 增加 swoole.use_shortname 必须启用的检测,避免用户因使用友商框架导致无法正常启用 imi 又不明原因的问题

  • 新增 Db::transContext() 方法

  • 支持获取随服务启动的进程对象 #35

推出 JWT 组件一把梭

03 Jan 06:37
Compare
Choose a tag to compare

每周唠叨

本周推出了 imi-jwt 组件,支持在 imi 框架中非常方便地接入 jwt

但是 jwt 绝不是 session 的替代品!!!请大家一定要弄清楚!!!

最近很忙,忙于开发项目,项目当然是用 imi 框架在开发……祝大家2020年头发依然健在!

免费视频教程

【宇润】基于 PHP + Swoole 的 imi 框架新手入门课程 | 每周五更新 | 从秃头到满头秀发,让你有更多时间上班划水,脱单不再是梦

戳我免费看从秃头到满头秀发的 imi 框架教程https://www.bilibili.com/video/av78158909

每周五晚上,更新一集哦~

更新日志

增强

  • 新增 imi-jwt 组件,支持在 imi 框架中非常方便地接入 jwt (传送门)

  • 新增支持监听事务提交和回滚事件 (文档)

  • Event->off() 方法现在可以不传第二个参数,允许清空事件中所有监听 (文档)

  • WebSocket 控制器和动作注解支持限定握手路由地址(比如某个 WS 通讯处理,只有握手某个 url 时才可以触发)(文档)

  • WebSocket 握手时向 ConnectContext 写入 uri 对象

  • 新增 TNotRequiredDataToProperty,相比 TDataToProperty 允许不传构造方法参数

优化

  • 重构:分离数据库事务管理对象

  • 优化 Facade 生成类注释的,参数和返回值可为空、参数默认值

  • 优化当 Main 类不存在时的异常提示文字

修复

  • 修复握手响应返回后写入连接上下文,导致有时刚握手完 WebSocket 通讯获取连接上下文数据不正确的问题

  • 修复事务嵌套回滚bug

  • 修复部分场景下的参数类型问题

  • 修复 ConnectContext::muiltiSet() 方法写入无效问题

  • 修复多个服务使用 http session 时的配置冲突问题

新增支持 AMQP 消息队列组件

27 Dec 07:26
Compare
Choose a tag to compare

每周唠叨

本周推出了 imi-amqp 组件,支持在 imi 框架中使用支持 AMQP 协议的消息队列,如:RabbitMQ

从此你就可以在 imi 框架里一把梭使用消息队列啦!

免费视频教程

【宇润】基于 PHP + Swoole 的 imi 框架新手入门课程 | 每周五更新 | 从秃头到满头秀发,让你有更多时间上班划水,脱单不再是梦

戳我免费看从秃头到满头秀发的 imi 框架教程👉https://www.bilibili.com/video/av78158909

每周四或五晚上,更新至少一集~

更新日志

增强

  • 新增 imi-amqp 组件 (传送门)

  • Redis 缓存支持设定 replaceDot,将 key 中的 "." 替换为 ":" (文档)

  • Redis 缓存支持设定 prefix 缓存键前缀 (文档)

  • 增强进程随服务启动 (文档)

优化

  • 优化一些代码

修复

  • 修复连接池资源项没有锁定问题

  • 修复连接池心跳检测有时引起报错的问题

  • 修复 Redis ping() 方法,在扩展版本为 5.x 时,返回值判断问题

提升 MacOS 及部分 Linux 发行版兼容性

20 Dec 07:53
Compare
Choose a tag to compare

每周唠叨

本周主要做了一些兼容性优化工作,方便大家在各种系统中使用 imi 框架开发。

免费视频教程

【宇润】基于 PHP + Swoole 的 imi 框架新手入门课程 | 每周五更新 | 从秃头到满头秀发,让你有更多时间上班划水,脱单不再是梦

戳我免费看从秃头到满头秀发的 imi 框架教程👉https://www.bilibili.com/video/av78158909

已更新第 4 集,每周四晚上更新至少一集~

更新日志

增强

  • 新增支持限制日志的 trace 条目数量,默认为 -1 不限制。属性名:traceLimit

优化

  • 优化 MacOS 及部分 Linux 发行版兼容性

  • 调整 Cron 进程 sock 文件名

修复

  • 修复 Bean 类一些问题

  • 修复有时注解不生效问题

  • 修复异常无法记录问题

  • 修复 MacOS 系统无法使用热更新问题,采用 unix socket 通讯

  • 修复验证器注解 callable={@Inject("BeanName"), "methodName"} 无效问题

  • 修复在有些环境下,imi 命令行生成不正确的问题