单一模块
事实上,一般的应用并不需要划分多个模块,所以可以简化控制器的命名空间,以及省去模块目录。
配置单一模块的方式:
// 使用单一模块
'app_multi_module' => false,
配置之后,取消index
模块目录,把index
目录下面的子目录直接放到application
目录下面,目录结构对比如下。
多模块:
├─application 应用目录(可设置)
│ ├─common.php 公共函数文件
│ ├─route.php 路由配置文件
│ ├─database.php 数据库配置文件
│ ├─config.php 应用配置文件
│ ├─index index模块目录
│ │ ├─config.php 模块配置文件
│ │ ├─common.php 模块函数文件
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录(可选)
│ │ ├─view 视图目录(可选)
│ │ └─ ... 更多类库目录
单模块:
├─application 应用目录(可设置)
│ ├─controller 控制器目录
│ ├─model 模型目录
│ ├─view 视图目录
│ ├─ ... 更多类库目录
│ ├─common.php 函数文件
│ ├─route.php 路由配置文件
│ ├─database.php 数据库配置文件
│ └─config.php 配置文件
单模块设计后,其实就没有模块的概念了,模块的配置及公共文件就是应用的配置和公共文件。
单模块设计的应用类库命名空间简化了,从原来的
app\index\controller\Index
变成了
app\controller\Index
大家会问了,单模块设计下如何区分前台和后台呢?别忘了我们前面提过的ThinkPHP控制器分级的概念,因为一般来说前后台只是控制器和视图的区分,模型层是统一的,所以我们只需要这样划分目录结构:
├─application 应用目录(可设置)
│ ├─controller 控制器目录
│ │ ├─home 前台控制器目录
│ │ └─admin 后台控制器目录
│ ├─model 模型目录
│ ├─view 视图目录
│ │ ├─home 前台视图目录
│ │ └─admin 后台视图目录
│ ├─ ... 更多类库目录
│ ├─common.php 函数文件
│ ├─route.php 路由配置文件
│ ├─database.php 数据库配置文件
│ └─config.php 配置文件