ThinkPHP 8 多应用架构搭建实战指南
多应用模式允许在一个项目中运行多个独立的应用模块,每个应用拥有独立的控制器、视图和中间件,同时共享模型、服务和配置资源。这种架构非常适合需要前台、后台及 API 端分离的中大型项目。
1. 什么是多应用模式
1.1 核心概念
多应用模式下,URL 访问规则通常遵循 http://domain.com/应用名/控制器/操作。例如 /admin/user/index 指向后台用户列表,而 /api/user/login 则对应 API 接口。
1.2 适用场景
适合使用多应用模式的场景包括:
- 前台 + 后台 + API 三端分离
- 多个子系统(如商城、论坛、博客)
- 不同业务模块需要独立部署或权限控制
不适合的场景通常是简单的单一应用或只有一个管理后台的项目,此时单应用模式维护成本更低。
| 特性 | 单应用模式 | 多应用模式 |
|---|---|---|
| 目录结构 | app/controller/ | app/admin/controller/, app/api/controller/ |
| 路由 | /user/login | /admin/user/login, /api/user/login |
| 适用场景 | 小型项目 | 中大型项目 |
| 复杂度 | 简单 | 中等 |
| 维护性 | 一般 | 好 |
2. 安装与配置
ThinkPHP 8.0 默认是单应用模式,需安装扩展支持。
# 创建项目
composer create-project topthink/think tp8_multi_app
# 进入目录
cd tp8_multi_app
# 安装多应用扩展
composer require topthink/think-multi-app
安装成功后会自动生成多应用支持文件,无需额外配置即可启用。
3. 目录结构规划
合理的目录结构是架构清晰的关键。建议将公共模块放在 app/common/,各应用独立逻辑放在对应目录下。
project/
├── app/
│ ├── common/ # 公共模块(所有应用共享)
│ │ ├── model/ # 共享模型
│ │ ├── service/ # 共享服务
│ │ ├── library/ # 共享类库
│ │ └── validate/ # 共享验证器
│ ├── admin/ # 后台应用
│ │ ├── controller/
│ │ ├── service/
│ │ ├── middleware/
│ │ └── view/
│ ├── api/
│ │ ├── controller/
│ │ ├── middleware/
│ │ └── route/
│ └── index/
│ ├── controller/
│ └── view/
├── config/
├── /
└── runtime/

