topextend/think-extends

ThinkPHP 8.1 extend

Installs: 3

Dependents: 0

Suggesters: 0

Security: 0

Type:extends

0.0.2 2025-04-14 03:10 UTC

This package is auto-updated.

Last update: 2025-04-16 12:02:01 UTC


README

ThinkPHP 6.x/8.x 企业级分层架构解决方案

🎯 项目概述

本扩展为 ThinkPHP 提供了一套完整的分层架构实现方案,包含以下核心组件:

  • 控制器层:处理 HTTP 请求和响应,提供标准化输出格式
  • 服务层:封装核心业务逻辑,处理事务和业务流程
  • 仓储层:数据访问抽象层,提供统一的数据操作接口
  • 模型层:数据实体定义,包含基础 CRUD 操作
  • 中间件:处理跨切面关注点,如认证、日志等

🏗️ 架构优势

  1. 职责分离:各层职责明确,避免代码耦合
  2. 可测试性:各层可独立测试,便于单元测试
  3. 可维护性:业务变更只需修改对应层级代码
  4. 可扩展性:新增功能不影响现有架构

🛠️ 核心功能

控制器层特性

  • 标准化 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);
    }
}

📈 性能建议

  1. 合理使用仓储层缓存
  2. 避免在循环中调用服务层方法
  3. 批量操作优先使用模型批量方法
  4. 复杂查询使用查询构造器优化

    🤝 贡献指南

    欢迎提交 Pull Request 或 Issue 反馈问题