一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

ThinkPHP 6.0 多应用模式搭建全流程:实战

时间:2026-07-12 09:21:57 编辑:袖梨 来源:一聚教程网

ThinkPHP 6.0 多应用模式需四者严格对齐:扩展安装(composer require topthink/think-multi-app)、目录结构(删除app/controller、用php think app:create admin创建应用)、命名空间(如namespace appadmincontroller)、路由导入(Route::import('admin', 'admin')),缺一不可。

ThinkPHP 6.0 多应用模式不是改个配置就能跑通,它依赖扩展、目录结构、命名空间和路由加载四者严格对齐。漏掉任意一环,就会报 App not existsClass not found

装扩展 + 清旧结构

TP6.0 默认不带多应用能力,topthink/think-multi-app 是硬性前置依赖。不装它,目录建得再标准也没用。

  • 在项目根目录执行:composer require topthink/think-multi-app
  • 删掉 app/controller 目录(及其下所有文件)——只要这个目录存在,框架就强制降级为单应用模式,app_multi_module => true 也无效
  • 检查 config/app.php 中是否已启用:'app_multi_module' => true;较新版本(6.0.2+)已废弃 auto_multi_app,不用管

建应用目录 + 对齐命名空间

每个应用必须是 app/ 下的小写子目录,且命名空间必须与路径完全一致。大小写或符号错误会导致 404 或类加载失败。

  • 用命令创建后台应用:php think app:create admin
  • 确认生成结构:存在 app/admin/controller/Index.phpapp/admin/route.phpapp/admin/config.php
  • 控制器类的命名空间必须为 namespace appadmincontroller;,不能是 appAdmincontrollerappcontroller
  • 视图默认路径为 view/admin/,比如 fetch('index') 实际读取的是 view/admin/index.html

显式导入子应用路由

route/route.php 是全局入口,但子应用的路由文件不会自动加载。不手动 import,app/admin/route.php 就是死文件。

立即学习“PHP免费学习笔记(深入)”;

  • route/route.php 中添加:Route::import('admin', 'admin');
  • 第二个参数 'admin' 必须与 app/admin 目录名完全一致(大小写敏感)
  • 第一个参数 'admin' 是路由分组标识,会影响 URL 前缀,比如访问 /admin/dashboard
  • app/admin/route.php 内部应写 Route::get('dashboard', 'Index/dashboard'),避免和主路由冲突

配置隔离与运行时分离

ThinkPHP 的配置合并机制是「应用级覆盖全局」,不是「开关式启用」。想让 admin 用独立数据库,关键不是打开某个 flag,而是把配置文件放对位置。

  • 应用专属配置放在 config/admin/ 目录下,例如 config/admin/database.php 会自动覆盖全局 database.php
  • 运行时目录自动按应用隔离:runtime/admin/runtime/index/ 互不干扰
  • 如需设置默认应用,在 config/app.php 中加:'default_app' => 'index'

热门栏目