亲爱朋友们,我又回来了,想死你们啦!
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。谐音爱米,中式英语的意思是我米。
寻有缘人
想要加入我们吗?开源项目不能只靠一两个人,而是要靠大家的努力来完善~
我们需要你的加入,你可以做的事(包括但不限于以下):
- 纠正拼写、错别字
- 完善注释
- bug 修复
- 功能开发
- 文档编写(https://github.com/Yurunsoft/imidoc)
- 教程、博客分享
转自 https://www.oschina.net/news/104609/imi-v-0-3-released