1 Star 6 Fork 1

keyboardman / hyperf-ioc

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

hyperf-ioc

介绍

在hyperf上封装了ioc/di,对常用的日志、异常处理、请求参数过滤等进行封装,划分数据操作层Dao弱化model耦合性。简单封装websocket接口。

软件架构

MVC(封装IOC/Di)本项目对hyperf进行了进一步延申细化,对Controller、Service、Dao、Model提供便捷的基类,实现长生命周期,协程可用,引入了IOC(控制反转)和DI(依赖注入/容器)的设计思想,业务开发过程中全程无需实例化。

说到实例化的问题,在项目常驻内存,且有高并发场景下,频繁使用new无异于短生命周期,尤其是一个生命周期中重复new了相同的类,特别容易出错。这里最好参考单例模式的思想,并不是说一定要禁止使用实例化,而是避免复用。

hyperf容器内的类都是单例,严禁把单次请求使用的数据储存到类属性中,静态方法也一样。也就是说,在本项目中按照规范书写MVC业务代码,是默认单例的。

安装教程

  1. 同hyperf框架,只是简单封装、上层设计模式改变。
  2. Php74框架需要的扩展;
  3. swoole4.7(4.5存在较多缺陷,建议用新版);
  4. 因为是基于开源框架开发的,上线前一定要封装一些安全策略,生产可用;

目录结构

这里只说明app目录下文件,其他目录结构和原生hyperf框架一样。

Aspect(切面)
Constants(枚举)
Controller(控制器)
Exception(抛出类)
Listener(监听模式)
Middleware(中间件)
Model(模型)
Plugin(插件/组件)
Process(自定义进程)
Repositories(仓库)
Service(服务层)
Task(任务)

使用说明

  1. Controller控制器

AbstractController中注入了容器、请求的接口,供子类使用,BaseController才是本项目的基类。 规范:Controller中自动注入Service(服务)实例,只需要用注解@property注入仓库,即可在子类中直接调用对应模块的仓库。

  1. Model模型

继承BaseModel基类,模块划分,尽量不要把业务耦合逻辑写进来,只写复用性强的方法。

  1. Plugin(组件|插件)

一些在后续开发中需要用到的组件、客户端,可以放进来,Plugin/Common目录存放比较重要的公用组件,其余组件例如日志类Log单独作为Plugin/Log。

自定义组件内部对代码设计不做什么要求,只要是独立且调用方便就好了,当然建议使用容器调用。

  1. Service(服务层)与Dao(数据操作层)

Dao用于控制器和数据操作层之间,主要是封装类似于数据的查询、创建、更新、删除等逻辑,供使用者调用,但在调用过程中不需要考虑更加具体的实现逻辑。 Dao(“数据操作层”)将业务对象交给Service处理,自己处理非业务逻辑。

Service承载着功能性服务或者业务耦合性服务。

使用时,直接通过“隐式注入服务类”自动依赖注入,保证协程的单例模式。

参与贡献

  1. 感谢hyperf作者提供框架并允许封装开源。

特技

  1. 使用 Readme_XXX.md 来支持不同的语言,例如 Readme_en.md, Readme_zh.md
  2. Gitee 官方博客 blog.gitee.com
  3. 你可以 https://gitee.com/explore 这个地址来了解 Gitee 上的优秀开源项目
  4. GVP 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
  5. Gitee 官方提供的使用手册 https://gitee.com/help
  6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 https://gitee.com/gitee-stars/
MIT License Copyright (c) 2022 keyboardman Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

在hyperf上封装了ioc/di,对常用的日志、异常处理、请求参数过滤等进行封装,划分数据操作层Dao弱化model耦合性。简单封装websocket接口。 展开 收起
PHP 等 3 种语言
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
PHP
1
https://gitee.com/chinakeyboardman/hyperf-ioc.git
git@gitee.com:chinakeyboardman/hyperf-ioc.git
chinakeyboardman
hyperf-ioc
hyperf-ioc
master

搜索帮助