ThinkPHP6多应用模式深度解析:企业级项目架构实战指南
一、架构优势
多应用模式使项目维护成本降低60%,团队协作效率提升200%
project/
├─ app/ # 核心库
├─ app_admin/ # 后台应用
├─ app_api/ # API接口应用
├─ app_mobile/ # 移动端应用
└─ app_web/ # PC端应用
二、核心配置
1. 多应用启用配置
// config/app.php
return [
'auto_multi_app' => true,
'app_map' => [
'admin' => 'app_admin', // 域名绑定
'api' => 'app_api'
],
'domain_bind' => [
'admin.example.com' => 'app_admin'
]
];
2. 路由隔离方案
// app_api/route/app.php
Route::group('api', function(){
Route::get('user/:id', 'user/read');
})->prefix('api/');
// app_admin/route/app.php
Route::group('admin', function(){
Route::resource('user', 'User');
})->prefix('admin/');
三、高级技巧
1. 共享核心业务逻辑
// 创建公共service
project/app/common/service/UserService.php
// 各应用调用方式
app('commonUserService')->getUser($id);
2. 独立数据库配置
// app_admin/config/database.php
return [
'connections' => [
'admin_db' => [
'type' => 'mysql',
'hostname' => '127.0.0.1',
'database' => 'admin_db',
]
]
];
// 模型中使用指定连接
protected $connection = 'admin_db';
四、完整案例
电商平台多应用架构
// 1. 安装多应用扩展
composer require topthink/think-multi-app
// 2. 创建应用目录
php think build app_admin
php think build app_api
// 3. 配置入口文件
// public/admin.php
<?php
namespace think;
require __DIR__ . '/../vendor/autoload.php';
$http = (new App())->setAppName('app_admin')->run();
$http->send();
// 4. 实现跨应用调用
// app_api/controller/Product.php
public function detail($id) {
$product = appcommonmodelProduct::find($id);
$inventory = app('app_adminserviceInventory')->get($id);
return json([$product, $inventory]);
}
function runDemo() {
alert(‘执行 php think build 命令前请确保已安装多应用扩展’);
}