topextend / think-extends
ThinkPHP 8.1 extend
0.0.2
2025-04-14 03:10 UTC
Requires
- php: ^7.1|^8.0
- ext-curl: *
- ext-gd: *
- ext-iconv: *
- ext-json: *
- ext-mbstring: *
- ext-openssl: *
- firebase/php-jwt: ^6.11
- topthink/framework: ^6.0|^8.0
This package is auto-updated.
Last update: 2025-04-16 12:02:01 UTC
README
ThinkPHP 6.x/8.x 企业级分层架构解决方案
🎯 项目概述
本扩展为 ThinkPHP 提供了一套完整的分层架构实现方案,包含以下核心组件:
- 控制器层:处理 HTTP 请求和响应,提供标准化输出格式
- 服务层:封装核心业务逻辑,处理事务和业务流程
- 仓储层:数据访问抽象层,提供统一的数据操作接口
- 模型层:数据实体定义,包含基础 CRUD 操作
- 中间件:处理跨切面关注点,如认证、日志等
🏗️ 架构优势
- 职责分离:各层职责明确,避免代码耦合
- 可测试性:各层可独立测试,便于单元测试
- 可维护性:业务变更只需修改对应层级代码
- 可扩展性:新增功能不影响现有架构
🛠️ 核心功能
控制器层特性
- 标准化 JSON 响应格式
- 自动异常捕获和处理
- 请求参数自动验证
- 用户身份自动注入
- 操作日志自动记录
服务层特性
- 分布式事务管理
- 业务操作日志记录
- 数据验证和转换
- 业务流程编排
- 第三方服务集成
仓储层特性
- 分页查询封装
- 查询结果缓存
- 批量操作支持
- 数据访问抽象
- 多数据源支持
模型层特性
- 自动维护时间戳
- 软删除支持
- 字段类型转换
- 数据权限控制
- 安全字段过滤
📚 使用指南
安装方式
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()
📝 使用示例
控制器层示例
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('获取用户列表失败');
}
}
服务层示例
use think\admin\Service;
class User extends Service
{
public function getUserList($data)
{
return $this->repositoryUser->getUserList($data);
}
}
仓储层示例
use think\admin\Repository;
class User extends Repository
{
public function getUserList($data)
{
return $this->modelUser->where('status', 1)->paginate();
}
}
模型层示例
use think\admin\Model;
class User extends Model
{
public function scopeStatus($query, $status)
{
return $query->where('status', $status);
}
}
📈 性能建议
- 合理使用仓储层缓存
- 避免在循环中调用服务层方法
- 批量操作优先使用模型批量方法
- 复杂查询使用查询构造器优化
🤝 贡献指南
欢迎提交 Pull Request 或 Issue 反馈问题