Files
FendxPHP/FendxPHP_项目架构.md
Lawson 2782d765fb feat(database): 添加用户角色权限系统及相关监控功能
- 创建用户表(users)包含基本信息和认证字段
- 创建角色表(roles)用于权限控制
- 创建权限表(permissions)定义系统权限
- 创建用户角色关联表(user_roles)建立用户与角色关系
- 创建角色权限关联表(role_permissions)建立角色与权限关系
- 创建迁移记录表(migrations)追踪数据库变更
- 添加AdminController提供管理员面板功能
- 实现系统监控、配置管理、缓存清理等功能
- 添加AOP切面编程支持的各种通知类型
- 实现告警管理AlertManager支持多渠道告警
- 添加文档注解接口规范
2026-04-08 17:00:28 +08:00

754 lines
17 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
**FendxPHP 项目架构V1.02026-04-01**
下面给你一份**真正可交付、超详细、结构标准、可直接放立项/评审材料**的
**FendxPHP 项目架构文档(完整版·正式可交付)**
我用最规范、最干净、可直接复制进 Word 的格式给你,不带多余废话。
**FendxPHP 企业级框架 项目架构文档**
文档版本V1.0
编写日期2026-04-01
适用版本FendxPHP 正式版
运行环境PHP 8.1 / 8.2 / 8.3
文档状态:正式定稿
**目 录**
1 文档概述
2 项目概述与定位
3 总体架构设计
4 分层架构详细说明
5 核心模块详细设计(超详细)
6 项目目录结构与工程组织
7 模块依赖关系
8 技术选型清单
9 非功能架构设计(性能/安全/可用/扩展/可维护)
10 部署架构方案
11 架构亮点与优势
12 术语说明
13 版本变更记录
**1 文档概述**
**1.1 编写目的**
本文档用于完整、正式、详细地描述 FendxPHP 企业级开发框架的**整体架构、分层结构、模块职责、模块交互、工程结构、技术栈、部署方案、非功能设计**。
用于架构评审、开发指导、测试依据、运维部署、项目交付与验收,统一团队技术规范。
**1.2 文档范围**
覆盖 FendxPHP 全部内容:
• 整体架构与分层
• 内核与所有业务组件
• 目录结构、模块划分、依赖关系
• 技术选型与第三方依赖
• 请求全生命周期流程
• 性能、安全、可用性、扩展性、可维护性设计
• 开发/测试/生产部署架构
**1.3 读者对象**
• 架构师
• PHP 后端开发工程师
• 测试工程师
• 运维工程师
• 项目管理人员
**2 项目概述与定位**
**2.1 项目名称**
FendxPHP 轻量化企业级 PHP 开发框架
**2.2 项目背景**
现有 PHP 框架普遍存在以下问题:
• 重型框架:启动慢、占用高、配置复杂、学习成本高
• 轻型框架:功能残缺,无企业级能力(事务、权限、缓存、安全、微服务)
• 无统一规范:请求、响应、异常、日志、数据库操作不统一
• 高并发、安全、可维护性不足
FendxPHP 旨在解决以上问题,提供一套**轻量、全功能、标准化、安全、高性能、易扩展**的企业级 PHP 开发框架。
**2.3 项目定位**
• 定位:企业级 API / 管理后台 / SaaS / 高并发接口 / 微服务架构
• 风格:全注解、少配置、约定大于配置
• 特性:标准化、插件化、全链路可追踪、高安全、高可用
• 目标:让 PHP 项目开发更快、更规范、更稳定、更好维护
**3 总体架构设计**
FendxPHP 采用 **五层纵向分层 + 横向插件化组件** 架构。
分层从上到下依次为:
\1. 业务应用层
\2. 组件服务层
\3. 内核引擎层
\4. 基础支撑层
\5. 启动与容器层
所有依赖**只能自上而下,禁止反向依赖、禁止循环依赖**,保证架构清晰、稳定、易维护。
**3.1 整体架构图(文字可直接写进文档)**
Plaintext 业务应用层 ↑ 组件服务层Web、DB、缓存、权限、日志、任务、文件、微服务、监控 ↑ 内核引擎层IOC、AOP、上下文、配置、事件 ↑ 基础支撑层(工具、加密、异常、数据转换) ↑ 启动与容器层(入口、环境检查、配置加载、容器初始化)
**3.2 请求全生命周期标准流程**
\1. 请求进入入口文件
\2. 框架启动、环境检查、加载配置
\3. 容器初始化、扫描注解、完成Bean注册
\4. 路由匹配、定位目标Controller
\5. 请求参数解析、自动校验、XSS/SQL 危险字符过滤
\6. 执行拦截器责任链
\7. 进入Controller方法
\8. 调用Service业务逻辑
\9. 调用Dao/缓存/微服务组件
\10. 事务管理、异常捕获、日志记录
\11. 统一格式封装响应结果
\12. 日志输出、监控埋点、结束请求
**4 分层架构详细说明**
**4.1 启动与容器层**
职责:
• 框架唯一入口管理
• PHP版本/扩展检查
• 多环境识别dev/test/pre/prod
• 配置文件加载、敏感配置解密
• 类自动加载、注解扫描
• IOC容器初始化、Bean创建与依赖注入
• 优雅关闭、资源释放
**4.2 内核引擎层**
职责:
• IOC容器Bean管理、依赖注入、生命周期管理
• AOP引擎切面、通知、切点、代理、排序
• 全局上下文请求隔离、TraceId、用户信息透传
• 配置中心:多环境、热加载、加解密、扩展接入配置中心
• 事件调度:同步/异步事件、监听、触发
**4.3 基础支撑层**
职责:
提供**无业务侵入、全项目通用**的基础能力:
• 字符串、数组、集合、分页工具
• 日期时间、格式化工具
• 加密工具MD5、SHA256、AES、RSA、JWT
• 文件、上传、下载、IO工具
• HTTP客户端统一封装
• 全局异常基类、错误码、断言
• 数据拷贝、驼峰/下划线互转、类型转换
**4.4 组件服务层**
框架最核心、最完整的一层,包含所有企业级能力:
• Web 组件:路由、请求、响应、拦截器
• DB 组件ORM、多数据源、事务
• 缓存组件Redis、本地缓存、缓存注解、防穿透/击穿/雪崩
• 权限安全组件认证、RBAC、接口权限、数据权限、安全防护
• 日志组件分级、TraceId、异步、切割、清理
• 定时任务组件Cron、分布式锁、任务管理
• 文件组件:本地/OSS/MinIO 统一存储、上传/下载/分片
• 微服务组件:注册、发现、配置、负载均衡、熔断、远程调用
• 监控组件健康检查、QPS、RT、错误率、系统指标、告警
**4.5 业务应用层**
业务项目基于框架编写的内容:
• Controller请求入口、参数接收、响应返回
• Service业务逻辑、事务控制、服务编排
• Dao数据访问、数据库操作
• Entity数据库实体映射
• Validate参数校验规则
• VO/DTO展示对象、传输对象
• Job定时任务实现
• Interceptor自定义拦截器
**5 核心模块详细设计(超详细)**
下面是**可直接用于评审、最完整**的模块描述。
**5.1 启动管理模块**
• 检查PHP版本是否≥8.1
• 检查必需扩展是否安装pdo、redis、json、mbstring等
• 自动识别运行环境dev/test/pre/prod
• 加载对应环境配置
• 注册类自动加载器
• 扫描注解、构建Bean定义
• 初始化IOC容器
• 注册异常捕获处理器
**5.2 IOC 容器模块**
• 支持注解:#[Controller]、#[Service]、#[Dao]、#[Inject]
• 自动构造函数注入
• 单例模式为默认,支持多例配置
• 循环依赖检测与提示
• Bean初始化、前置处理、后置处理、销毁
• 支持手动获取Bean
**5.3 AOP 切面模块**
支持五种通知:
• Before方法执行前
• After方法执行后无论是否异常
• Around方法执行前后包裹
• AfterReturning正常返回后
• AfterThrowing异常抛出后
支持三类切点:
• 注解切点
• 方法名匹配切点
• 路由匹配切点
典型用途:
事务、日志、权限、缓存、限流、性能统计、接口签名校验。
**5.4 全局上下文模块**
• 每请求独立上下文,互不污染
• 全局唯一TraceId贯穿整个请求
• 存储用户信息、请求Id、租户Id、请求耗时
• 协程/异步安全,可透传
• 支持日志自动输出TraceId
**5.5 配置管理模块**
• 支持 .php .env .yaml .yml
• 多环境自动切换
• 敏感配置加密存储,读取自动解密
• 支持配置热重载
• 可扩展接入 Nacos / Apollo
**5.6 Web 路由模块**
• 支持 GET/POST/PUT/PATCH/DELETE
• 注解式路由:#[GetRoute] #[PostRoute]
• 支持路径参数 /user/{id}
• 支持通配符 /file/**
• 支持路由分组、统一前缀
• 启动时检查重复路由
• 前缀树+哈希表实现O(1)匹配
**5.7 请求解析与校验模块**
• 自动获取GET/POST/JSON/HEADER/COOKIE
• 自动封装到 DTO 对象
• 内置校验规则:
required、email、mobile、idCard、length、max、min、in、regex
• 支持自定义校验器
• 自动XSS过滤、SQL危险字符过滤
**5.8 统一响应模块**
固定结构:
code、msg、data
所有接口**完全统一**,前端无需适配多种格式。
支持:正常返回、错误返回、分页返回、列表返回。
**5.9 拦截器模块**
• 支持全局拦截、分组拦截、单接口拦截
• 三个生命周期before、after、afterCompletion
• 支持排序、开关控制
• 典型用途登录校验、权限判断、IP黑白名单、接口限流、请求日志
**5.10 ORM 模块**
• 注解:#[Table] #[Id] #[Column]
• 自动生成CRUD
• Lambda式条件构造无硬编码SQL
• 支持分页、排序、in、not in、between、like
• 一对一、一对多、多对多关联查询
• 全部使用PDO预编译彻底防SQL注入
**5.11 多数据源模块**
• 支持多库独立配置
• 使用注解 #[DataSource("db2")] 动态切换
• 支持读写分离、读库负载均衡
• 事务内保持同一个连接,保证事务安全
**5.12 事务管理模块**
• 注解 #[Transactional]
• 支持事务传播机制
• 支持事务隔离级别配置
• 异常自动回滚,正常自动提交
• 支持多数据源单库安全事务
**5.13 缓存组件**
两级架构:
• 一级缓存Redis
• 二级缓存:本地内存(可选)
三大注解:
• #[Cacheable] 查询缓存
• #[CacheUpdate] 更新缓存
• #[CacheEvict] 删除缓存
防三大问题:
• 缓存穿透:空值缓存
• 缓存击穿:互斥锁
• 缓存雪崩:随机过期时间
**5.14 权限认证模块**
• 支持 Session / Token / JWT
• 登录自动续期
• 登录失败次数锁定,防暴力破解
• 支持Token黑名单强制踢人
**5.15 RBAC 权限模块**
标准权限体系:
用户 → 角色 → 权限
支持四级权限:
• 菜单权限
• 按钮权限
• 接口权限
• 数据行级权限
使用注解:
\#[RequiresPermission("user:list")]
**5.16 安全防护模块**
• XSS全局过滤
• SQL注入全面拦截
• CSRF令牌校验
• 接口限流IP限流、接口限流
• 敏感字段脱敏(手机号、身份证、银行卡)
**5.17 日志链路模块**
• 级别DEBUG/INFO/WARN/ERROR
• 每条日志自动携带TraceId
• 异步写入,不阻塞业务
• 按天/按大小自动切割
• 自动清理过期日志
• 可对接ELK、Loki、Graylog
**5.18 定时任务模块**
• 注解 #[Scheduled(cron="* * * * *")]
• 支持固定频率、固定延迟
• 分布式锁保证多实例不重复执行
• 支持任务启停、手动触发、执行日志、失败重试
**5.19 文件服务模块**
统一接口,适配多种存储:
• 本地存储
• MinIO
• 阿里云OSS
• 腾讯云COS
支持:
单文件、多文件、分片上传、断点续传、文件大小校验、格式校验、签名下载、访问日志。
**5.20 微服务组件**
• 服务注册、服务发现
• 健康检查
• 配置中心、动态刷新
• 负载均衡:轮询、随机、权重
• 熔断、降级、限流、防雪崩
• 统一HTTP远程调用封装
**5.21 监控组件**
• 服务健康检查接口
• 接口指标QPS、响应时间、错误率
• 系统指标CPU、内存、磁盘、网络
• 支持自定义业务指标
• 多渠道告警:邮件、钉钉、企业微信
**6 项目目录结构(可直接照着建)**
**6.1 框架整体多模块结构**
Plaintext fendx-php-framework/ ├── fendx-dependencies/ # 统一Composer版本管理 ├── fendx-common/ # 公共工具、常量、枚举、异常 ├── fendx-core/ # 内核IOC、AOP、上下文、配置 ├── fendx-web/ # Web路由、请求、响应、拦截器 ├── fendx-db/ # 数据库ORM、多数据源、事务 ├── fendx-cache/ # 缓存Redis、注解、安全防护 ├── fendx-security/ # 权限、认证、安全、防护 ├── fendx-log/ # 日志、TraceId、异步日志 ├── fendx-job/ # 定时任务、分布式调度 ├── fendx-file/ # 文件服务、多存储适配 ├── fendx-cloud/ # 微服务:注册、配置、调用、熔断 ├── fendx-monitor/ # 监控、指标、健康检查、告警 ├── fendx-starter/ # 启动器、自动装配、入口 └── fendx-example/ # 示例项目(单体+微服务)
**6.2 业务项目标准目录(用户直接用)**
Plaintext app/ ├── Controller/ # 控制器 ├── Service/ # 业务逻辑 ├── Dao/ # 数据访问 ├── Entity/ # 数据库实体 ├── Validate/ # 参数校验 ├── Vo/ # 前端展示对象 ├── Dto/ # 内部传输对象 ├── Job/ # 定时任务 └── Interceptor/ # 拦截器 config/ # 配置文件 public/ # 入口目录 runtime/ # 日志、缓存、临时文件
**7 模块依赖关系**
• 所有模块 → 依赖 fendx-common
• web、db、cache、security、log、job、file、cloud、monitor → 依赖 fendx-core
• fendx-starter → 依赖所有组件模块
• fendx-example → 依赖 fendx-starter
依赖单向、无环、稳定、易维护、易替换、易升级。
**8 技术选型清单**
**8.1 基础环境**
• PHP8.1 / 8.2 / 8.3
• Composer2.x
• 服务器Linux
• Web服务器Nginx
**8.2 自研核心**
• IOC 容器(自研)
• AOP 切面引擎(自研)
• ORM 持久层(自研)
• 路由引擎(自研)
**8.3 第三方依赖(最小依赖)**
• PDO 数据库扩展
• Redis 扩展
• Guzzle HTTP客户端
• YAML 解析
• JWT 库
**8.4 数据库与中间件**
• MySQL、PostgreSQL、Oracle
• Redis
• Nacos、Consul
• MinIO、OSS
**8.5 测试与运维**
• PHPUnit
• Docker
• Kubernetes
• Prometheus + Grafana
**9 非功能架构设计**
**9.1 性能设计**
• 内核轻量化、低内存占用
• 减少反射、减少IO操作
• 异步日志、异步上传
• 连接池复用、缓存减少DB请求
• 路由O(1)匹配,无性能损耗
**9.2 可用性设计**
• 全局异常捕获,不崩溃
• 限流、熔断、降级,防雪崩
• 优雅关闭,不中断正在执行请求
• 多实例集群部署,无单点
**9.3 扩展性设计**
• 全部组件插件化、可插拔
• 提供SPI扩展点
• 支持自定义实现替换内置组件
• 支持自定义路由、ORM、缓存、权限
**9.4 安全性设计**
• 所有入口参数强制校验
• XSS、SQL注入、CSRF自动防护
• 敏感数据加密存储、加密传输
• 细粒度权限控制
• 操作日志、审计日志全记录
**9.5 可维护性设计**
• 统一代码规范
• 全链路TraceId追踪
• 监控+告警全覆盖
• 配置与代码分离
• 结构清晰、职责单一、易读易改
**10 部署架构方案**
**10.1 开发环境**
• PHP 8.1+
• Composer
• MySQL + Redis
• 内置Server直接启动
**10.2 测试环境**
• Nginx + PHP-FPM
• Docker 容器化
• 独立DB、Redis环境完全隔离
• 自动化接口测试、安全扫描
**10.3 生产环境**
• 小型项目:单机部署
• 中型项目:多实例 + Nginx 负载均衡
• 大型微服务Docker + K8s 编排,支持弹性伸缩、灰度发布、健康检查、自动自愈
**10.4 运维规范**
• 配置外置、敏感配置加密
• 日志自动切割、自动清理
• 监控全覆盖、异常实时告警
• 版本可灰度、可回滚
**11 架构亮点与优势**
• 超轻量、启动快、内存占用低
• 全注解、零XML、极少配置
• 企业级能力齐全,开箱即用
• 架构分层清晰、模块解耦、易维护
• 高并发、高安全、高可用
• 标准化强,团队协作成本极低
• 扩展性极强,支持单体→微服务平滑升级
**12 术语说明**
• IOC控制反转容器管理对象
• AOP面向切面统一横切逻辑
• RBAC基于角色的权限控制
• TraceId全链路追踪ID
• 熔断降级:服务高可用容错机制
• ORM对象关系映射数据库操作封装
**13 版本变更记录**
| 版本 | 日期 | 变更内容 |
| ---- | ---------- | ---------------------------- |
| V1.0 | 2026-04-01 | 初始正式版,完整架构定型发布 |
如果你愿意,我可以**再给你配套一份:**
**《FendxPHP 架构设计图文字版可直接贴进Word做架构图》**
要我给你补上吗?要我就直接发。
|(注:文档部分内容可能由 AI 生成)