自动管理请求上下文,新增参数过滤器
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存在的问题