imi 是基于 PHP 协程应用开发框架,它支持 HttpApi、WebSocket、TCP、UDP 应用开发。
由 Swoole 提供强力驱动,Swoole 拥有常驻内存、协程非阻塞 IO 等特性。
框架遵守 PSR 标准规范,提供 AOP、注解、连接池、请求上下文管理、ORM 模型等常用组件。
imi 的模型支持关联关系的定义,增删改查一把梭!
毫秒级的注解及代码热更新 ,让你在开发时只管一把梭,体验与 fpm 下开发并无二致,保存就刷新,立马看到效果。
与其他专注微服务领域的 Swoole 框架不同,imi 专注单体应用开发。原因很简单:大部分公司都不需要上微服务,单体应用足矣。
imi 框架第一个版本 v0.0.1 首发于 2018 年 6 月 21 日
本周的更新,第一阶段的单元测试编写工作完成。
imi 的单侧目前有 235 个测试用例,1035 个断言(不含独立组件)。
imi 的 travis 自动化测试涵盖了 PHP 7.1-7.3、Swoole 4.3.x、4.4.x、master。宇润和 Swoole 开发组大佬们保持着密切联系,发现问题立即反馈。所以当 Swoole 发布新版时,imi 能够很轻松地以最快速度做到兼容。
目前 imi 保持着每周一个小版本的速度进行更新迭代,各种实用组件正在开发中。
imi 组件库:https://github.com/imiphp
欢迎各路新人和大佬的加入,只要有心,就可以参与进来!
本周具体更新日志如下:
增强
- Smarty 模版引擎组件:https://github.com/imiphp/imi…
- Swoole Tracker 服务监控组件:https://github.com/imiphp/imi…
- ArrayData、ArrayList、FilterableList 允许被 count()
- 新增 ImiUtil* 等多个类的测试用例
- 新增 File::deleteDir() 方法
- 新增 ImiUtilDigital 工具类
修复
- 修复 Fixed ImiDbQuery::WhereEx() 问题(@loyating #25)
- 修复 ArrayUtil::remove() 方法无法移除对象问题,新增 ArrayUtil::removeKeepKey() 方法
- 修复测试用例在低配电脑上出现的奇怪问题(Swoole v4.4.4 更新后出现)
- 修复 File::path() 拼接 xxx:// 路径问题
- 修复 ImiUtilImi::checkCompareValue() 判断不等于结果不正确问题
- 修复随机生成小数是科学计数格式的问题
优化
- 重构 Event,移除 KVStorage 依赖,使用类对象代替 kv 数组存储底层数据
- 优化 Http Middleware 机制
- 优化 WebSocket Middleware 机制
- 优化 TCP Middleware 机制
- 优化 UDP Middleware 机制
- 优化测试用例
- ImiUtilClassObject 类注释完善
- 支持将 task_worker_num 设为 0
- 优化 AppInitReceiver
- 移除 File::readFile()、File::writeFile() 方法(Hook 协程化后用 file_get_contents()、file_put_contents() 即可)
- 移除 KVStorage
- 文件日志驱动写入时上锁
- Query 动态参数编号全部从 1 开始
开始使用
创建 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
完全开发手册
联系我们
Github 反馈:https://github.com/Yurunsoft/…
码云仓库:https://gitee.com/yurunsoft/IMI
Segmentfault 提问:https://segmentfault.com/
开源中国 问答:https://www.oschina.net/question
QQ 群交流:17916227