88 Star 589 Fork 115

GVP宇润 / imi

2022-12-16 17:20
105007 yurunsoft 1578917691 宇润

增强

优化

  • 优化解决 Statement 缓存数量过多问题 (#464)

  • 优化查询构建器的 limit() 操作值也通过预处理绑定

  • 优化分页查询,统计记录数量时移除排序提升性能

最后提交信息为: 修正文档
2022-01-21 14:18
105007 yurunsoft 1578917691 宇润

v2.1.0

2022 年来了,imi 2.0 经历漫长的开发过程,正式发布后又持续迭代了 4 个月,目前已经比较稳定。

imi 2.0、1.3 作为 LTS 版本,为保持稳定性,持续提供问题修复、安全修复,不再提供功能更新,暂无终止维护时间表。

imi v2.1.0 带来了两个新特性:宏定义和异步日志。并且将最低支持的 Swoole 版本提升至 v4.8,PHP 版本要求保持不变,依然是 PHP >= 7.4。

异步日志

顾名思义,不再需要被日志记录的 IO 拖慢接口响应,一切都是异步的。

只需要在 @app.logger 中增加:'async' => true 就可以启用。

该特性仅 Swoole 有效。

宏定义

支持在 imi 框架中使用宏定义。

支持在 PHP 代码中使用类似 C/C++ 中的宏,进行代码预编译。

可以方便兼容不同版本和环境下运行的 PHP 代码。

在一些场景可以通过预定义常量,来提升性能,减少运行时判断。

本组件基于 Yurunsoft/php-macro 组件,该组件由宇润主导开发。

这是 imi v2.1.0 引入的实验性新特性

Composer

本项目可以使用composer安装,遵循psr-4自动加载规则,在你的 composer.json 中加入下面的内容:

{
    "require": {
        "imiphp/imi-macro": "~2.1.0"
    }
}

支持的宏

文件格式

支持的文件名:*.php*.macro

.php

需要在文件中任意位置顶格加入代码:

# macro

该代码不加不生效

A.php 执行时,会在相同目录生成处理后的 A.php.macro.php

.macro

需要创建同名的 .php 文件,如 A.php,内容为空即可。

再创建 A.macro 编写 PHP 代码。

执行时,会在相同目录生成处理后的 A.macro.php

常量

宏:#define#const#ifdef#ifndef

例子:

#ifndef IN_SWOOLE
    # define IN_SWOOLE extension_loaded('swoole')
#endif
#ifdef IN_SWOOLE
#if IN_SWOOLE
\Co\run(function(){
    echo 'hello world';
});
#endif
#endif

注意:使用宏定义的常量,仅在生成代码时有效,运行时无效

条件语句

宏:#if#else#elif#endif

例子:

<?php
#if version_compare(\PHP_VERSION, '8.0', '>=')
function test(): string|false
#else
/**
 * @return string|false
 */
function test()
#endif
{
    return 'hello world';
}

PHP >= 8.0 环境下生成的代码:

<?php
function test(): string|false
{
    return 'hello world';
}

PHP < 8.0 环境下生成的代码:

<?php
/**
 * @return string|false
 */
function test()
{
    return 'hello world';
}
最后提交信息为: 更新文档[no ci]
2021-11-05 19:56
105007 yurunsoft 1578917691 宇润

增强

  • 热更新支持重新加载配置文件

  • 新增 Server::getConnections()、Server::getConnectionCount() (#203)

  • 支持往模型中动态写入数据,但不支持 toArray() 和序列化

  • SQL 监听支持捕获异常

  • Workerman 环境启动支持输出 network 信息

with() 关联预加载特性

这个版本实现了模型关联查询 with 特性,可以减少查询次数提升关联查询性能

  • 支持在关联注解中设置 with=true 开启自动预加载

  • 支持在关联注解中设置 withFields={"指定序列化字段"}

  • 支持在 Model::query() 后调用 with() 方法指定预加载的关联属性名

  • 支持在 Model::query() 后调用 with() 方法指定预加载关联属性名对应的回调

  • 支持在 Model::query() 后调用 withField() 指定查询出来的模型,序列化时的字段

  • Model::queryRelationsList() 支持预加载查询

优化

  • 改进开发体验 (#197)

  • 优化 Swoole 下文件扫描性能

  • 兼容关闭 Swoole 短名称的场景

  • 优化 AppContexts::APP_PATH 处理为绝对路径

  • 优化 json 错误抛出异常的容错

  • 单元测试改进 (#202)

  • 重构 HTTP 路由提升性能 (#200)

  • 优化 ArrayList 类型不对应时的提示

  • 生成模型时,将 json 类型字段的 getter 方法设为引用返回,便于修改数据

  • 优化一些代码

修复

  • 修复 @app.overrideDefaultIgnoreNamespace、@app.overrideDefaultIgnorePaths 配置不生效问题

  • 修复 Request 执行 setUri() 时会触发 initUri()

  • 修复权限组件转为树形的问题 (#201)

  • 修复 SessionId 为空字符串时当作正常 Session 的问题

  • 修复空 Session Json 解析失败

  • 修复 Swoole RedisServerUtil

  • 修复 Workerman UDP 无法从请求上下文获取packetData

  • 修复 ManyToMany、PolymorphicToMany、PolymorphicManyToMany 注解指定 fields 参数无效

最后提交信息为: 更新文档 [no ci]
2021-08-20 15:58
105007 yurunsoft 1578917691 宇润

imi v2.0 发布,PHP 长连接分布式开发框架

输入图片说明

imi v2.0

框架介绍

imi 是一款支持长连接微服务分布式的 PHP 开发框架,它可以运行在 PHP-FPM、Swoole、Workerman 多种容器环境下。

imi 支持开发 Http 接口,以及 Http2、WebSocket、TCP、UDP、MQTT 等常驻内存服务。

imi 拥有丰富的功能组件,v2.0 版本内置了 2 个分布式长连接服务的解决方案。

imi 框架现在已经稳定运行在:文旅电商平台、物联网充电云平台、停车云平台、支付微服务、短信微服务、钱包微服务、卡牌游戏服务端、数据迁移服务(虎扑)等项目中。

imi 第一个版本发布于 2018 年 6 月 21 日

鸣谢

感谢群里抢先体验 imi 2.0,提出建议和反馈 bug 的开发者们!

感谢 @Gumo666 @NHZEX @loyating 等开发者对 imi 文档或代码的贡献!

作者介绍

宇润(张润宇),1994 年 3 月 12 日(植树节)出生于无锡。

初二开始就自学编程,喜欢 C#,但事与愿违,工作后一直从事 PHP 开发工作。

imi 框架创始人,Swoole 开发组成员,宇润 PHP 系列组件作者。

开源项目包括但不限于:imi、PaySDK、YurunHttp、Guzzle-Swoole、YurunOAuthLogin、ChineseUtil 等

2.0 版本介绍

  • 多容器:支持 Swoole、Workerman、PHP-FPM 等

  • 分布式:无心智负担的长连接分布式解决方案

  • 高性能:常驻内存 + PHP 8.0 JIT

  • 次世代:下一代 PHP 框架(与 Laravel Octane 的多容器支持理念,不谋而合)

2.0 版本目前处于测试阶段,不久之后将发布正式版本

快速体验

创建 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

环境要求

  • PHP 7.4、8.0
  • Swoole >= 4.7
  • Windows、Liunx、MacOS

新特性

  • PHP 8.0 原生注解(原注释写法依旧支持)

  • 内置长连接服务分布式解决方案,助力 PHP 物联网生态

  • 多容器支持,可以运行在 Swoole、Workerman、PHP-FPM、Cli 环境

  • 解决痛点:beanScan、Main 类等现已是非必选项

  • 解决痛点:PSR-7 基础上增加 setXXX 方法,保留 withXXX 并完全兼容 PSR-7

  • 命令行包改用 symfony/console

  • 日志组件改用 monolog/monolog

  • 等……

开发思路

  • 废除 v1 中不合理、写法啰嗦的地方,简化配置,imi 让开发项目一把梭的理念从未改变

  • 将一些功能,交给更加成熟的第三方包,imi 有它自己的使命

  • 全部使用强类型、严格模式开发,保证代码质量

  • 重构底层,让框架支持在多种服务容器下运行(Swoole、Workerman、PHP-FPM 等),方便扩展

  • 专注提升分布式长连接服务开发体验,这是目前市面上框架的不足之处,还只是用来开发 Http 服务,这么用 Swoole 和 Workerman 简直是暴殄天物

PHP 8.0 原生注解支持

输入图片说明

长连接服务分布式解决方案

输入图片说明

输入图片说明

输入图片说明

Demo 体验:https://github.com/imiphp/imi-project-websocket;

后续计划

  • 让更多组件支持在非 Swoole 环境下运行

  • 支持 Swow、RoadRunner 环境

  • 长连接分布式解决方案,支持更多消息中间件、网关

  • 更多微服务化的组件开发和深度集成

  • imi v2 免费视频教程、源码分析视频等

拥抱开源

  • 我们日常开发中使用的绝大多数软件,都是开源软件(VSCode、PHP、Nginx、MySQL、Redis 等)

  • 宇润非常希望能有更多的人可以参与到包括 imi 在内的开源项目中来,为 PHP 生态建设献出一份力!

  • 参与开源门槛其实不高,你的使用、反馈、建议、bug 修复、代码贡献等等,才是为开源项目添砖加瓦,我为人人,人人为我,让开源项目能够帮助到更多的人。

  • 开源不是免费、白嫖、无私奉献,且用且珍惜……

最后提交信息为: 更新文档
2021-07-23 15:31
105007 yurunsoft 1578917691 宇润

随便说说

imi v2.0 即将发布,敬请期待哦~


更新日志

增强

  • #98 新增支持 Redis 哨兵模式、集群模式;cache、lock、queue、rate-limit 改造兼容

  • imi-jwt 组件兼容支持 PHP 8.0

  • AMQP 组件升级

  • 新增为一个列表查询指定关联便捷方法(\Imi\Model\Model::queryRelationsList($modelList)

优化

修复

  • 修复组件仓库同步问题

  • 修复 access-control 模型

  • 修复模型指定字段查询后,序列化字段时 camel 设置无效问题

  • 修复 AMQP 队列 pop 问题

代码质量

  • 增加 Swoole 4.7 测试
最后提交信息为: Merge branch 'dev'
2021-07-03 10:31
105007 yurunsoft 1578917691 宇润

随便说说

目前 imi v2.0 版本已基本完成开发和文档编写工作,正在准备发布介绍PPT及视频。

最近把官网、文档模版、所有组件都挪到了 imi 主仓库进行维护。并且将原仓库(yurunsoft/imi)迁移至(imiphp/imi)

以后所有的 issue、Pull Request 都在 imiphp/imi 进行。


imi v2.0 版本最新规划及动态: https://github.com/Yurunsoft/imi/issues/66

如果有任何问题,欢迎联系我们!


更新日志

修复

  • 修复极端情况下的 AMQP 队列 pop 问题

  • 修复查询构建器别名功能下的绑定参数问题(可能影响软删除等功能)


imi v2.0 版本发布临近,等视频发布后,同时会有活动,抽奖赠送一些 imi 周边产品,包括印有 imi Logo 的手机壳(所有主流型号都有)、T恤

输入图片说明

当然你也可以抢先下单体验, 支持一下 imi~

微信扫码:

输入图片说明

最后提交信息为: Merge branch 'dev'
2021-06-04 16:32
105007 yurunsoft 1578917691 宇润

随便说说

目前 imi v2 版本已基本完成开发,正在进行文档编写工作。

最近把官网、文档模版、所有组件都挪到了 imi 主仓库进行维护。

以后所有的 issue、Pull Request 都在主仓库进行。


imi v2 版本最新规划及动态: https://github.com/Yurunsoft/imi/issues/66

如果有任何问题,欢迎联系我们!


更新日志

优化

  • 优化 ConnectionBinder 使用 ServerBean

修复

  • 修复模型保存更新问题

  • 修复 Entity 注解 camel 设为 false 失效问题

  • 修复关联模型问题

  • 修复模型查询后的序列化问题

  • 修复因心跳导致的,偶现连接跨协程使用问题

  • 修复在用户进程中,向客户端推送数据有警告的问题

  • 修复生成用注释表示的方法时,默认值中有数组时的格式问题

  • Fix typo (#95)

最后提交信息为: Merge branch 'dev'
2021-04-23 15:08
105007 yurunsoft 1578917691 宇润

随便说说

目前 imi v2 版本开发进度顺利,即将进入文档编写阶段。

如果有任何问题,欢迎联系我们!

imi v2 版本最新规划及动态: https://github.com/Yurunsoft/imi/issues/66


更新日志

增强

  • 新增 ClassObject::convertArrayToKV()、convertKVToArray()、newInstance() 方法

  • 增加 Http 参数不存在时的异常抛出

优化

  • 优化一些代码

修复

  • 修复 PHP 8 联合类型兼容问题

  • 修复一处类型问题

  • 修复启用协程的命令行工具,未初始化异步连接池的问题

  • 修复监听事务提交事件中,开启事务并出现提交或回滚导致的死循环

最后提交信息为: 修复测试
2021-04-09 14:01
105007 yurunsoft 1578917691 宇润

随便说说

目前 imi v2 版本开发进度顺利,如果有任何问题,欢迎联系我们!

imi v2 版本最新规划及动态: https://github.com/Yurunsoft/imi/issues/66


更新日志

增强

  • 增强 Inject 注解不指定 name 时的作用

优化

  • 优化连接池关闭

  • 当出错 exit 时增加 exit code 255

修复

  • 修复 BinderHandler

  • 修复开启 Opcache 后热更新失效问题

  • 修复注入返回值为 void 的方法问题

  • 修复 deprecated 提示

  • 修复 Swoole 4.5 下热重启错误

  • 修复 Swoole Server start、ManagerStart、WorkerStart 事件抛出异常并捕获后,未退出进程造成的问题

最后提交信息为: 当出错 exit 时增加 exit code 255
2021-04-09 13:59
105007 yurunsoft 1578917691 宇润

随便说说

目前 imi v2 版本开发进度顺利,如果有任何问题,欢迎联系我们!

imi v2 版本最新规划及动态: https://github.com/Yurunsoft/imi/issues/66


更新日志

增强

  • 新增连接绑定器本地驱动

  • 增强连接绑定器,支持指定处理器类

  • 支持模型软删除 #76

  • 新增表生成的前后置操作事件

  • 新增分组本地驱动 GroupLocal

优化

  • 优化MySQL、Redis 连接重置、连接池关闭

  • 减少打印日志时对 debug_backtrace 的调用、支持设定 Log 组件的 debug_backtrace 回溯限制 (#81)

修复

  • 修复 SQL 监听 #80

  • 修复生成模型不指定 baseClass 时的“BaseClass Imi\Model\Model not extends Imi\Model\Model”错误提示

最后提交信息为: 修复问题
2021-03-19 16:30
105007 yurunsoft 1578917691 宇润

随便说说

最近 PHP 界热闹了起来,也多出了很多瓜可以吃,有点意思~

输入图片说明


目前 imi v2 版本开发进度顺利,如果有任何问题,欢迎联系我们!

imi v2 版本最新规划及动态: https://github.com/Yurunsoft/imi/issues/66


更新日志

增强

  • 新增支持配置 JsonObjectParser、JsonArrayParser 序列化时的参数

  • 新增 JsonEncode 注解,支持设定 JSON 类型字段序列化时的配置 (#77)

  • 新增根据注释或声明类型,实现 Inject、RequestInject、ServerInject 的智能注入

  • 新增 ConnectContext::getFd() 获取当前连接号

  • 更新 generate/model 工具,支持定义生成模型所继承的基类 (#78)

优化

  • 优化 JsonErrorHandler 使用 JsonView 实现

  • 优化 Group

修复

没有已知 BUG

最后提交信息为: 修复问题
2021-03-12 17:14
105007 yurunsoft 1578917691 宇润

随便说说

目前 imi v2 版本开发进度顺利,如果有任何问题,欢迎联系我们!

imi v2 版本最新规划及动态: https://github.com/Yurunsoft/imi/issues/66

imi 正式成为了码云 GVP 项目,大家也可以到码云关注下哦!(https://gitee.com/yurunsoft/IMI


更新日志

增强

  • Http 路由支持 ./ 用法

  • Server 工具类新增:sendByFlag、sendRawByFlag、close、closeByFlag 方法

  • Server 工具类 send()、sendByFlag()、sendRaw()、sendRawByFlag() 支持 SWOOLE_BASE 模式跨进程推送

  • Server 工具类 sendToGroup()、sendRawToGroup() 支持 SWOOLE_BASE 模式跨进程推送

优化

  • 引入代码静态分析、格式检测

  • 更新 .env 组件版本 #75

  • 模型类的 save() 方法不再使用 replace 实现

  • 优化向 WebSocket 推送时判断连接合法性

  • 优化热更新

  • 优化 ConnectionBinder

修复

  • 修复停止服务命令报错问题

  • 修正异常内容的拼写

  • 修复 Group isInGroup()、getFds() 方法不存在问题

最后提交信息为: 修正注释
2021-02-08 11:05
105007 yurunsoft 1578917691 宇润

随便说说

目前 imi v2 版本开发进度顺利,如果有任何问题,欢迎联系我们!

imi v2 版本最新规划及动态: https://github.com/Yurunsoft/imi/issues/66

imi 正式成为了码云 GVP 项目,大家也可以到码云关注下哦!(https://gitee.com/yurunsoft/IMI


目前已经进入无心撸码,只想放假的状态~

🏮祝大家 2021 春节快乐~


更新日志

优化

  • 优化处理多行SQL语句时过滤空SQL

  • 统一大小写

修复

  • 修复 stopServer、reloadServer

  • 修复热重启超时问题

  • 修复热更新缓存文件体积不断增加

  • 修复从模型生成表

  • 修复模型生成工具在字段类型为 json 时的问题

  • 修复 RedisGroup->isInGroup()

  • 修复特定情况下监听事务提交和回滚的问题

2021-01-29 08:49
105007 yurunsoft 1578917691 宇润

随便说说

目前 imi v2 版本开发进度顺利,如果有任何问题,欢迎联系我们!

imi v2 版本最新规划及动态: https://github.com/Yurunsoft/imi/issues/66

imi 正式成为了码云 GVP 项目,大家也可以到码云关注下哦!(https://gitee.com/yurunsoft/IMI


更新日志

增强

  • 新增 SQL 监听功能

  • 新增 JsonNotNull 注解

优化

  • 优化模型中的 find、update、delete 操作

  • 优化 PdoMysql->exec() 返回值判断

  • 优化 limit 不再使用参数绑定,而是转为 int 后拼接

  • 优化 RedisManager::getNewInstance()

修复

  • 修复 HTTP 请求不带 host 请求头时解析报错问题

  • 修复模型查询指定关联问题

  • 修复 RedisModel::deleteBatch() hash 模式返回值问题

  • 修复 PoolConfig 2个方法的返回值

  • 修复 RedisManager::release()、Db::release()

  • 修复在 Docker 中停止、重启服务时,如果环境没有安装 kill 命令的报错问题 #74

2020-12-25 10:05
105007 yurunsoft 1578917691 宇润

随便说说

目前 imi v2 版本已经开始开发了(2020-09)如果有任何问题,欢迎联系我们!

imi v2 版本最新规划及动态: https://github.com/Yurunsoft/imi/issues/66

imi 正式成为了码云 GVP 项目,大家也可以到码云关注下哦!(https://gitee.com/yurunsoft/IMI


更新日志

增强

  • 路由注解新增 paramsBody 参数,支持从 JSON、XML 中决定路由

  • 路由注解新增 paramsBodyMultiLevel 参数,支持指定是否为多级参数获取

  • 新增检查 UDP 重复路由

  • 新增检查 TCP 重复路由

  • 新增检查 WebSocket 重复路由

  • 新增检查 HTTP 重复路由

优化

  • 优化代码

修复

  • 修复在 WebSocket OnOpen 事件中 push 失败问题

  • 修复 Server->hasGroup()、Server->getGroup()

  • 修复方法参数默认值判断问题

  • 修复连接池开启心跳后,偶现的多协程使用同一个连接的问题

最后提交信息为: 更新文档
2020-12-01 08:58
105007 yurunsoft 1578917691 宇润

随便说说

本版本开始已经兼容了 PHP 8.0,并且将 PHP 8.0 加入了自动化测试中。


目前 imi v2 版本已经开始开发了(2020-09)如果有任何问题,欢迎联系我们!

imi v2 版本最新规划及动态: https://github.com/Yurunsoft/imi/issues/66

imi 正式成为了码云 GVP 项目,大家也可以到码云关注下哦!(https://gitee.com/yurunsoft/IMI


11月去医院住了两周,导致没有提交代码和发布版本,目前状态良好,恢复更新!

更新日志

增强

  • 新增正则验证注解

  • 新增 RequestContextProxy

  • 新增模型关联前置和后置事件

所有新增特性都可以在 文档 里找到哦

优化

  • 自动化测试抛弃 travis,向 GitHub Actions 迁移

  • 连接上下文操作增加 fd 判断

  • 优化缓存参数key不为字符串时的错误提示

  • 去除模型生成工具多余的参数绑定

  • 为部分不稳定的测试增加重试

修复

  • 修复 RequestProxy->getAttribute()

  • 修复 Server::sendMessage() workerID 获取不到的问题

  • 修复 Mysqli 驱动的编码不生效问题 #71

  • 修复 mysqli 报错:mysqli::next_result(): There is no next result set. Please, call mysqli_more_results()/mysqli::more_results() to check whether to call this function/method

最后提交信息为: 优化测试用例
2020-10-30 16:11
105007 yurunsoft 1578917691 宇润

随便说说

鉴于大家的热情及需求,imi v1 版本继续进行功能性开发直至 v2 版本发布,如果有需求依然可以跟我们提哦!

目前 imi v2 版本已经开始开发了(2020-09)如果有任何问题,欢迎联系我们!

imi v2 版本最新规划及动态: https://github.com/Yurunsoft/imi/issues/66

imi 正式成为了码云 GVP 项目,大家也可以到码云关注下哦!(https://gitee.com/yurunsoft/IMI

为 imi 投一票:https://www.oschina.net/project/top_cn_2020#imi

更新日志

增强

  • 新增模型字段类型list

  • 增加 protected 方法的注入和注解支持

优化

  • 优化:数据库事务事件中抛出异常,会清空事件

修复

  • 修复删除目录方法,会将软连接指向的目录也删除的问题
最后提交信息为: 格式化代码
2020-10-23 13:17
105007 yurunsoft 1578917691 宇润

随便说说

鉴于大家的热情及需求,imi v1 版本继续进行功能性开发直至 v2 版本发布,如果有需求依然可以跟我们提哦!

目前 imi v2 版本已经开始开发了(2020-09)如果有任何问题,欢迎联系我们!

imi v2 版本最新规划及动态: https://github.com/Yurunsoft/imi/issues/66

imi 正式成为了码云 GVP 项目,大家也可以到码云关注下哦!(https://gitee.com/yurunsoft/IMI

为 imi 投一票:https://www.oschina.net/project/top_cn_2020#imi

更新日志

增强

  • 引入格式化代码标准

  • Random 工具类生成随机字符,支持只传入 $min 时使用固定长度 #68

优化

  • 连接池 requestResourceCheckInterval 配置项默认值从 3 改为 30,并且支持设为 null 则不限制

  • 优化了一些代码

修复

  • 修复 phpunit 兼容性问题

  • 修复 $_SERVER 部分情况下的兼容问题

  • 修正一些错别字

最后提交信息为: 修正错别字
2020-02-28 14:20
105007 yurunsoft 1578917691 宇润

这两周依然远程办公,忙于各种项目。这周更新的 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 的模型生成工具将生成代码放在父类,用户在子类中编写代码。

最后提交信息为: 优化 Redis 连接池资源类
2020-02-14 16:14
105007 yurunsoft 1578917691 宇润

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

这周又有许多用户涌入 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

最后提交信息为: Text 注解支持字符验证 #46
PHP
1
https://gitee.com/yurunsoft/IMI.git
git@gitee.com:yurunsoft/IMI.git
yurunsoft
IMI
imi

搜索帮助