# think-extends **Repository Path**: topextend/think-extends ## Basic Information - **Project Name**: think-extends - **Description**: No description available - **Primary Language**: PHP - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-06 - **Last Updated**: 2025-04-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ThinkPHP 分层架构扩展 ThinkPHP 6.x/8.x 企业级分层架构解决方案 ## 🎯 项目概述 本扩展为 ThinkPHP 提供了一套完整的分层架构实现方案,包含以下核心组件: - **控制器层**:处理 HTTP 请求和响应,提供标准化输出格式 - **服务层**:封装核心业务逻辑,处理事务和业务流程 - **仓储层**:数据访问抽象层,提供统一的数据操作接口 - **模型层**:数据实体定义,包含基础 CRUD 操作 - **中间件**:处理跨切面关注点,如认证、日志等 ## 🏗️ 架构优势 1. **职责分离**:各层职责明确,避免代码耦合 2. **可测试性**:各层可独立测试,便于单元测试 3. **可维护性**:业务变更只需修改对应层级代码 4. **可扩展性**:新增功能不影响现有架构 ## 🛠️ 核心功能 ### 控制器层特性 - 标准化 JSON 响应格式 - 自动异常捕获和处理 - 请求参数自动验证 - 用户身份自动注入 - 操作日志自动记录 ### 服务层特性 - 分布式事务管理 - 业务操作日志记录 - 数据验证和转换 - 业务流程编排 - 第三方服务集成 ### 仓储层特性 - 分页查询封装 - 查询结果缓存 - 批量操作支持 - 数据访问抽象 - 多数据源支持 ### 模型层特性 - 自动维护时间戳 - 软删除支持 - 字段类型转换 - 数据权限控制 - 安全字段过滤 ## 📚 使用指南 ### 安装方式 ```bash composer require topextend/think-extend ``` # 分层调用流程 HTTP请求 → 中间件 → 控制器 → 服务层 → 仓储层 → 模型层 ## 🧩 核心特性 ### 分层架构 graph TD A[HTTP请求] --> B[Middleware] B --> C[Controller] C --> D[Service] D --> E[Repository] E --> F[Model] ### 功能清单 层级 功能特性 示例方法 控制器层 标准化JSON响应/异常捕获 success() , fail() 服务层 事务管理/操作日志/数据验证 transaction() , log() 仓储层 分页处理/缓存查询/批量操作 paginate() , withCache() 模型层 软删除/自动时间戳/安全字段过滤 safeUpdate() , scopeStatus() ## 📝 使用示例 ### 控制器层示例 ```php use think\admin\Controller; class User extends Controller { public function index() { $data = $this->request->post(); $result = $this->serviceUser->getUserList($data); if ($result) { return $this->success($result ); } return $this->error('获取用户列表失败'); } } ``` ### 服务层示例 ```php use think\admin\Service; class User extends Service { public function getUserList($data) { return $this->repositoryUser->getUserList($data); } } ``` ### 仓储层示例 ```php use think\admin\Repository; class User extends Repository { public function getUserList($data) { return $this->modelUser->where('status', 1)->paginate(); } } ``` ### 模型层示例 ```php use think\admin\Model; class User extends Model { public function scopeStatus($query, $status) { return $query->where('status', $status); } } ``` # 📈 性能建议 1. 合理使用仓储层缓存 2. 避免在循环中调用服务层方法 3. 批量操作优先使用模型批量方法 4. 复杂查询使用查询构造器优化 # 🤝 贡献指南 欢迎提交 Pull Request 或 Issue 反馈问题