ThinkPHP多应用模式实战:企业级项目模块化解决方案
一、架构优势
多应用模式使大型项目维护成本降低60%,团队协作效率提升200%
project/
├─ app/
│ ├─ admin/ # 后台应用
│ ├─ api/ # 接口应用
│ ├─ web/ # 前台应用
│ └─ common/ # 公共模块
├─ config/
│ ├─ admin/ # 后台配置
│ ├─ api/ # 接口配置
│ └─ web/ # 前台配置
二、核心配置
1. 应用自动发现
// config/app.php
return [
'app_auto_discover' => true,
'app_map' => [
'admin' => 'admin',
'api' => 'api',
],
'domain_bind' => [
'admin.example.com' => 'admin',
'api.example.com' => 'api',
]
];
2. 路由独立配置
// app/admin/route/app.php
Route::group('admin', function(){
Route::rule('login', 'auth/login');
})->middleware(['AdminAuth']);
// app/api/route/app.php
Route::group('v1', function(){
Route::resource('user', 'User');
})->middleware(['ApiAuth']);
三、高级技巧
1. 公共模块设计
// app/common/service/UserService.php
namespace appcommonservice;
class UserService
{
public static function getUser($id)
{
// 共享业务逻辑
}
}
// 各应用调用方式
appcommonserviceUserService::getUser(1);
2. 动态配置加载
// 应用入口文件
$app = require __DIR__ . '/../vendor/topthink/thinkphp/base.php';
// 加载不同应用配置
$app->loadConfig(require __DIR__.'/../config/'.app('http')->getName().'/database.php');
$app->http->run();
四、完整案例
电商多应用系统
project/
├─ app/
│ ├─ admin/ # 管理后台
│ │ ├─ controller/Product.php
│ ├─ api/ # 移动端API
│ │ ├─ controller/v1/Product.php
│ ├─ web/ # PC商城
│ │ ├─ controller/Index.php
│ └─ common/
│ ├─ model/Product.php # 共享模型
│ ├─ service/CartService.php # 购物车服务
// 产品模型统一调用
$product = appcommonmodelProduct::find(1);
// 后台路由
Route::rule('product/edit/:id', 'admin/product/edit');
// API版本控制
Route::group('v2', function(){
Route::get('product/:id', 'api/v2.Product/read');
});