mirror of
https://devops.lemonos.cn/lawson/FendxPHP.git
synced 2026-06-15 15:02:49 +08:00
344 lines
8.6 KiB
Markdown
344 lines
8.6 KiB
Markdown
|
|
# 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
|