ThinkPHP6多应用模块开发实战:企业级项目架构指南

2025-08-01 0 690

ThinkPHP6多应用模块开发实战:企业级项目架构指南

一、多应用模式的优势与场景

ThinkPHP6的多应用模式特别适合以下场景:

  • 前后端分离项目(API+Admin)
  • 多平台项目(PC+H5+小程序)
  • SaaS系统(多租户隔离)
  • 微服务架构(网关+服务模块)

二、多应用环境配置

1. 安装多应用扩展

composer require topthink/think-multi-app

2. 目录结构调整

www/
├── app/
│   ├── admin/          # 后台应用
│   │   ├── controller/
│   │   ├── model/
│   │   └── view/
│   ├── api/           # 接口应用
│   │   ├── controller/
│   │   └── middleware/
│   └── common/        # 公共模块
│       ├── service/
│       └── trait/
├── config/
├── route/
│   ├── admin.php
│   └── api.php
└── public/

三、核心功能实现

1. 跨应用路由配置

route/admin.php 后台路由:

<?php
use thinkfacadeRoute;

Route::group('admin', function() {
    // 登录路由
    Route::post('login', 'admin.Auth/login');
    
    // 需要权限的路由
    Route::group(function() {
        Route::resource('user', 'admin.User');
        Route::resource('menu', 'admin.Menu');
    })->middleware(appadminmiddlewareAuth::class);
});

2. 公共Service层实现

app/common/service/JwtService.php:

<?php
namespace appcommonservice;

use FirebaseJWTJWT;

class JwtService
{
    private static $key = 'your-secret-key';

    public static function createToken($uid)
    {
        $payload = [
            'iss' => 'your-domain',
            'iat' => time(),
            'exp' => time() + 7200,
            'uid' => $uid
        ];
        
        return JWT::encode($payload, self::$key);
    }

    public static function verifyToken($token)
    {
        try {
            return JWT::decode($token, self::$key, ['HS256']);
        } catch (Exception $e) {
            return false;
        }
    }
}

四、高级功能实现

1. 多应用中间件配置

app/admin/middleware/Auth.php:

<?php
namespace appadminmiddleware;

use appcommonserviceJwtService;

class Auth
{
    public function handle($request, Closure $next)
    {
        $token = $request->header('Authorization');
        if (!$token) {
            return json(['code' => 401, 'msg' => 'Token缺失']);
        }

        $payload = JwtService::verifyToken($token);
        if (!$payload) {
            return json(['code' => 403, 'msg' => 'Token无效']);
        }

        $request->uid = $payload->uid;
        return $next($request);
    }
}

2. 多数据库连接配置

config/database.php:

'connections' => [
    // 主库(写操作)
    'master' => [
        'type'      => 'mysql',
        'hostname'  => '127.0.0.1',
        'database'  => 'db_master',
        'username'  => 'root',
        'password'  => '',
        'charset'   => 'utf8mb4',
    ],
    
    // 从库(读操作)
    'slave' => [
        'type'      => 'mysql',
        'hostname'  => '127.0.0.1',
        'database'  => 'db_slave',
        'username'  => 'root',
        'password'  => '',
        'charset'   => 'utf8mb4',
    ],
],

五、性能优化方案

1. 路由缓存

// 生成路由缓存
php think optimize:route

// 清除路由缓存
php think clear:route

2. 配置缓存

// 生成配置缓存
php think optimize:config

// 生产环境建议在composer.json中添加
"scripts": {
    "post-autoload-dump": [
        "@php think optimize:config",
        "@php think optimize:route"
    ]
}

3. 自动加载优化

composer dump-autoload --optimize

六、项目部署方案

  1. 使用Nginx进行负载均衡
  2. 配置Supervisor守护进程
  3. 使用Redis作为Session和缓存驱动
  4. 实现自动化部署脚本
  5. 配置日志切割(logrotate)
ThinkPHP6多应用模块开发实战:企业级项目架构指南
收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

淘吗网 thinkphp ThinkPHP6多应用模块开发实战:企业级项目架构指南 https://www.taomawang.com/server/thinkphp/722.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务