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

344 lines
8.6 KiB
Markdown
Raw 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 - 企业级轻量级 PHP 开发框架
> 🚀 轻量化 · 🔒 企业级 · ⚡ 高性能 · 🛠️ 易扩展
FendxPHP 是一个专为现代企业级应用设计的轻量级 PHP 开发框架,采用自研内核,提供完整的企业级特性。
## ✨ 核心特性
### 🏗️ 架构设计
- **五层分层架构**: 业务应用层 → 组件服务层 → 内核引擎层 → 基础支撑层 → 启动与容器层
- **模块化设计**: 8个核心模块职责清晰易于维护和扩展
- **注解驱动**: 全注解配置,约定大于配置
- **AOP支持**: 完整切面编程,支持事务、日志、权限等横切关注点
### 🔧 核心功能
- **IOC容器**: 依赖注入、Bean管理、生命周期控制
- **路由系统**: 注解式路由、参数绑定、中间件支持
- **数据库**: ORM支持、多数据源、事务管理
- **缓存系统**: Redis缓存、本地缓存、防穿透/击穿/雪崩
- **安全认证**: JWT认证、RBAC权限、Token管理
- **日志系统**: TraceId追踪、异步日志、级别控制
## 📁 项目结构
```
FendxPHP/
├── app/ # 业务应用层
│ ├── Controller/ # 控制器
│ ├── Service/ # 业务逻辑
│ ├── Dao/ # 数据访问
│ ├── Entity/ # 数据库实体
│ ├── Validate/ # 参数校验
│ ├── Vo/ # 展示对象
│ ├── Dto/ # 传输对象
│ ├── Job/ # 定时任务
│ └── Interceptor/ # 拦截器
├── config/ # 配置文件
│ ├── app.php # 应用配置
│ ├── database.php # 数据库配置
│ ├── cache.php # 缓存配置
│ ├── config.php # 主配置文件
│ └── routes.php # 路由配置
├── database/ # 数据库相关
│ ├── migrations/ # 数据库迁移
│ ├── seeds/ # 种子数据
│ └── init.sql # 初始化脚本
├── docs/ # 文档目录
│ ├── 部署测试指南.md # 部署测试文档
│ ├── 快速测试指南.md # 快速测试指南
│ └── 分布式架构优化建议.md # 架构优化建议
├── scripts/ # 脚本工具
│ ├── run-tests.sh # 自动化测试脚本
│ ├── check-database.php # 数据库检查脚本
│ ├── check-database.ps1 # PowerShell数据库检查
│ ├── test-database.ps1 # 简化版数据库检查
│ ├── check-docker-db.sh # Docker数据库检查
│ └── quick-db-check.php # 快速数据库检查
├── tests/ # 测试目录
│ ├── Unit/ # 单元测试
│ ├── Integration/ # 集成测试
│ └── API/ # API测试
├── public/ # Web入口
│ └── index.php # Web入口文件
├── runtime/ # 运行时目录
│ ├── logs/ # 日志文件
│ ├── cache/ # 缓存文件
│ └── temp/ # 临时文件
├── reports/ # 测试报告
├── bin/ # 可执行文件
│ └── console # 控制台命令
├── fendx-framework/ # 框架核心
│ ├── fendx-common/ # 公共组件
│ ├── fendx-core/ # 内核引擎
│ ├── fendx-web/ # Web组件
│ ├── fendx-db/ # 数据库组件
│ ├── fendx-cache/ # 缓存组件
│ ├── fendx-security/ # 安全组件
│ ├── fendx-log/ # 日志组件
│ ├── fendx-starter/ # 启动器
│ ├── fendx-service/ # 服务组件
│ └── fendx-observability/ # 可观测性组件
├── docker-compose.test.yml # Docker测试环境
├── docker-compose.yml # Docker生产环境
├── fendx.sql # 完整数据库脚本
├── phpunit.xml # PHPUnit配置
├── fendx.php # CLI入口
├── FendxPHP_项目架构.txt # 架构文档
└── README.md # 项目说明
```
## 🚀 快速开始
### 环境要求
- PHP >= 8.1
- MySQL >= 5.7 或 MariaDB >= 10.2
- Redis >= 5.0
- Docker & Docker Compose (可选)
- Composer
### 安装配置
1. 克隆项目
```bash
git clone <repository-url>
cd FendxPHP
```
2. 安装依赖
```bash
composer install
```
3. 环境配置
```bash
cp .env.example .env
# 编辑 .env 文件配置数据库和缓存信息
```
4. 数据库初始化
```bash
# 方法1: 使用完整SQL脚本
mysql -u root -p fendx_php < fendx.sql
# 方法2: 使用迁移命令
php bin/console migrate:run
php bin/console migrate:seed
# 方法3: 使用数据库检查脚本
php scripts/check-database.php --fix
```
5. 配置验证
```bash
# 检查数据库状态
php scripts/check-database.php
# Windows PowerShell
.\scripts\check-database.ps1
# Docker环境
./scripts/check-docker-db.sh
```
### 运行应用
Web服务
```bash
php -S localhost:8000 -t public
```
访问 http://localhost:8000 查看应用。
CLI命令
```bash
php bin/console
```
### Docker运行
```bash
# 启动完整环境
docker-compose up -d
# 启动测试环境
docker-compose -f docker-compose.test.yml up -d
# 查看服务状态
docker-compose ps
```
## 💡 使用示例
### 控制器示例
```php
<?php
namespace App\Controller;
use Fendx\Core\Annotation\Controller;
use Fendx\Web\Annotation\GetRoute;
use Fendx\Web\Response\Response;
#[Controller]
class UserController
{
#[GetRoute('/users')]
public function index(): array
{
return Response::success(['users' => []]);
}
}
```
### 服务示例
```php
<?php
namespace App\Service;
use Fendx\Core\Annotation\Service;
use Fendx\Core\Annotation\Inject;
#[Service]
class UserService
{
#[Inject]
private UserDao $userDao;
public function getUsers(): array
{
return $this->userDao->findAll();
}
}
```
## 🧪 测试
### 运行测试
```bash
# 运行所有测试
./scripts/run-tests.sh
# Windows PowerShell
.\scripts\run-tests.ps1
# 使用PHPUnit
vendor/bin/phpunit
# 使用控制台命令
php bin/console test:all
```
### 测试类型
- **单元测试**: `php bin/console test:unit`
- **集成测试**: `php bin/console test:integration`
- **API测试**: `php bin/console test:api`
- **性能测试**: `php bin/console test:performance`
- **安全测试**: `php bin/console test:security`
### 覆盖率报告
```bash
# 生成覆盖率报告
php bin/console test:unit --coverage
# 查看HTML报告
open reports/coverage/index.html
```
## <20> 部署
### 本地部署
```bash
# 检查环境
php bin/console deploy:local
# 运行迁移
php bin/console migrate:run
# 启动服务
php -S localhost:8000 -t public
```
### Docker部署
```bash
# 构建镜像
docker build -t fendx-php .
# 运行容器
docker-compose up -d
# 查看日志
docker-compose logs -f
```
### Kubernetes部署
```bash
# 部署到K8s
kubectl apply -f k8s/
# 查看状态
kubectl get pods -l app=fendx-php
```
详细部署指南请参考:[部署测试指南](docs/部署测试指南.md)
## 🔧 开发工具
### 数据库工具
```bash
# 数据库检查
php scripts/check-database.php
# 数据库修复
php scripts/check-database.php --fix
# Windows PowerShell
.\scripts\check-database.ps1 fix
```
### 性能基准
```bash
# 运行基准测试
php bin/console benchmark:memory
php bin/console benchmark:database
php bin/console benchmark:cache
```
## <20>📚 文档
- [📖 部署测试指南](docs/部署测试指南.md) - 完整的部署和测试文档
- [⚡ 快速测试指南](docs/快速测试指南.md) - 快速上手测试指南
- [🏗️ 分布式架构优化建议](docs/分布式架构优化建议.md) - 架构优化建议
- [📋 架构文档](FendxPHP_项目架构.txt) - 详细的架构设计文档
- [🔧 开发指南](docs/) - 开发规范和最佳实践
- [📡 API文档](docs/) - API接口文档
## 🎯 默认账号
| 用户名 | 密码 | 角色 | 权限 |
|--------|------|------|------|
| admin | password | 超级管理员 | 所有权限 |
| test_user | password | 普通用户 | 基础权限 |
| developer | dev123 | 管理员 | 管理权限 |
| moderator | mod123 | 版主 | 内容管理 |
## 🤝 贡献
欢迎提交 Issue 和 Pull Request
### 开发规范
1. 遵循PSR-4自动加载标准
2. 编写单元测试
3. 更新相关文档
4. 通过所有CI检查
## 📄 许可证
MIT License
---
**作者**: Lawson
**邮箱**: lawson@fendx.cn
**版本**: 1.0.0
**更新**: 2024-01-15