thinkphp6 app下构建school目录,school目录里面构建多个子应用例如files,每个应用有自己的mvc,给出完整代码
时间: 2024-03-16 17:47:53 浏览: 14
好的,以下是一个基于 ThinkPHP 6 的项目结构示例,其中 `school` 目录为主应用,`files` 目录为子应用:
```
school
├── app
│ ├── controller
│ │ └── Index.php
│ ├── middleware
│ ├── model
│ └── view
├── config
│ ├── app.php
│ ├── cache.php
│ ├── database.php
│ ├── event.php
│ ├── middleware.php
│ ├── route.php
│ └── session.php
├── files
│ ├── app
│ │ ├── controller
│ │ │ └── File.php
│ │ ├── middleware
│ │ ├── model
│ │ └── view
│ ├── config
│ │ ├── app.php
│ │ ├── cache.php
│ │ ├── database.php
│ │ ├── event.php
│ │ ├── middleware.php
│ │ ├── route.php
│ │ └── session.php
│ └── public
│ ├── css
│ ├── js
│ └── index.php
├── public
│ ├── css
│ ├── js
│ └── index.php
└── vendor
```
其中,主应用 `school` 的目录结构与普通的 ThinkPHP 6 项目一致,子应用 `files` 目录下的目录结构与主应用类似。
在 `school/config/route.php` 文件中,可以配置子应用的路由信息,如下所示:
```php
<?php
use think\facade\Route;
// 子应用 files 的路由配置
Route::domain('files.example.com')
->namespace('files')
->group(function () {
// 定义路由规则
Route::get('/', 'Index/index');
// ...
});
```
在 `school/config/app.php` 文件中,可以配置子应用的命名空间信息,如下所示:
```php
<?php
return [
// ...
'auto_multi_app' => true,
'app_namespace' => 'app',
'app_map' => [
'files' => 'files',
],
'app_express' => [
'files.example.com' => 'files',
],
// ...
];
```
在 `school/config/database.php` 文件中,可以为子应用配置独立的数据库连接信息,如下所示:
```php
<?php
return [
// ...
'connections' => [
// 主应用的数据库连接配置
'mysql' => [
// ...
],
// 子应用 files 的数据库连接配置
'mysql_files' => [
'type' => 'mysql',
'hostname' => 'localhost',
'database' => 'files',
'username' => 'root',
'password' => '',
'hostport' => '',
'params' => [],
'charset' => 'utf8mb4',
'prefix' => '',
'debug' => true,
],
],
// ...
];
```
需要注意的是,子应用必须在主应用的 `config/app.php` 文件中进行配置,否则无法识别子应用。同时,子应用的命名空间必须与子应用的目录名一致。