皇上,还记得我吗?我就是1999年那个Linux伊甸园啊-----24小时滚动更新开源资讯,全年无休!

imi v0.3 发布,自动管理请求上下文,新增参数过滤器

imi v0.3 发布,自动管理请求上下文,新增参数过滤器

亲爱朋友们,我又回来了,想死你们啦!

2个多月没有刷版本号,imi 并没有凉,而是因为我实在太忙啦!

我们公司项目使用 imi 已经上线,这两个多月大部分时候是针对 imi 做 bug 修复,以及开发体验的细节上的提升。

这次 v0.3 版本发布是这两个月工作成果的一次总结,在此感谢群友们为 imi 做出的贡献!

最后,距离 imi 的 v1.0 正式版发布越来越近啦!

更新日志

新增

  • 新增方法参数过滤器 FilterArg
  • 新增 ArrayUtil::random() 方法,获取随机成员
  • 新增 imigo 函数(启动一个协程,自动创建和销毁上下文)
  • 新增 imiCallable 函数(为传入的回调自动创建和销毁上下文,并返回新的回调)
  • 新增 IMI.REQUEST_CONTENT.CREATE、IMI.REQUEST_CONTENT.DESTROY事件
  • 新增注解:DbInject、RedisInject、PoolResource
    可用于注入连接池中的资源对象到属性
  • 新增支持根据记录数计算总页数,Pagination->calcPageCount
  • 缓存注解允许指定 hash 方法,默认为 md5

调整/增强

  • 调整模型生成逻辑,生成表结构定义在基类,实际的模型类继承基类
    修改了表结构重新生成模型,也不用担心会覆盖掉模型类中自己写的方法
  • 现在注入方法的 Before 也可以修改参数了
  • ExtractData 注解从此脱离 HttpValidation 注解依赖
  • 调整默认 runtime 路径为:项目命名空间根下的 .runtime 目录中
    避免默认在 /tmp 目录中,可能被 linux 内置清理给清掉了
  • 热更新进程默认将 runtime 目录加入排除
  • 调整连接池配置 maxActiveTime 默认值为 null,新增 maxUsedTime 参数
  • 调整连接池配置,当 gcInterval 为 null 时,不启动定时器
  • 禁止在 MacOS 下设置进程名,解决报错问题
  • 连接池配置默认 minResources 调整为 1
  • 数据库查询器的 join 方法现在支持对表名使用 as 设定别名
    例:Db::query()->join(‘table as alias’)
  • 为 PDO Statement 兼容支持 bool 类型值代入
  • Cache 相关注解的 key 属性,支持用 {:args} 代入所有方法参数的 hash 值
  • 当使用 Swoole 协程 Redis 时,支持使用 _serialize() 方法
  • 新增路由初始化时的服务器类型判断
  • 调整热更新检测用到的文件路径到 runtime 中
  • View 注解的 renderType 属性默认设置从 html 改为 json
    原因:使用 imi 更推荐是用于开发接口,而不是用于后端页面渲染

修复

  • 修正错误的注释
  • 修复 Session 中间件潜在问题
  • 修复 ExtractData注 解在特定情况无效问题
  • 修复内存表模型,当属性名和 Column 注解中设定不一致时的问题
  • 修复使用内存表模型时的 Trying to get property of non-object 问题
  • 修复 buildRuntime 问题
  • 修复 Statement 问题
  • 修复数据库连接回收后还有残留的问题(Statement 缓存化的原因)
  • 修复连接池资源释放,以及并发情况下数量超过 maxResources 配置的问题
  • 修复池子重复初始化问题
  • 修复数据库关键词处理逻辑问题
  • 修复当删除文件时,热更新报错问题
  • 修复一个 notice 问题
  • 修复部分场景下,框架内部无法正常启动命令行
  • 修复查询器 leftJoin() 方法实际为 inner join 的问题
  • 修复 WS、TCP、UDP 注解中间件问题
  • 修复缓存功能在非服务器上下文下无法使用的问题
  • 修复使用 ? 预处理 SQL 的问题
  • 修复 imi/buildImiRuntime 后存在的注解修改无效问题
  • 修复重复 send() 导致的 Http request is finished 问题
  • 修复 WebSocket 无法握手问题
  • 修复少数环境中无法正常启动项目的问题
  • 修复配置文件注入属性的问题
  • 修复 logCacheNumber 数字判定 bug
  • 修复 Call to a member function isVariadic() on null 问题
  • 修复 TCP、UDP 作为子服务器时的 setting 问题
  • 修复配置路由问题
  • 修复进程池进程名称问题
  • 修复命令行参数解析不严谨的问题
  • 修复类没有被 use 的问题
  • 修复验证失败时,buildMessage 存在的问题

介绍

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

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

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

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

官网:https://www.imiphp.com/
文档手册:https://doc.imiphp.com/

代码仓库:
码云:https://gitee.com/yurunsoft/IMI
Github:https://github.com/Yurunsoft/IMI
Demo:https://gitee.com/yurunsoft/imi-demo
imi 组件仓库:https://github.com/imiphp

imi名字由来

宇润我是一个小米公司、小米产品、雷军的粉丝。我对 imi 的正确分词是i mi。谐音爱米,中式英语的意思是我米。

寻有缘人

想要加入我们吗?开源项目不能只靠一两个人,而是要靠大家的努力来完善~

我们需要你的加入,你可以做的事(包括但不限于以下):

转自 https://www.oschina.net/news/104609/imi-v-0-3-released