模块设计-j9九游
5.0版本对模块的功能做了灵活设计,默认采用多模块的架构,并且支持单一模块设计,所有模块的命名空间均以app
作为根命名空间(可配置更改)。
目录结构
标准的应用和模块目录结构如下:
├─application 应用目录(可设置)
│ ├─common 公共模块目录(可选)
│ ├─common.php 公共函数文件
│ ├─route.php 路由配置文件
│ ├─database.php 数据库配置文件
│ ├─config.php 应用配置文件
│ ├─module1 模块1目录
│ │ ├─config.php 模块配置文件
│ │ ├─common.php 模块函数文件
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录(可选)
│ │ ├─view 视图目录(可选)
│ │ └─ ... 更多类库目录
│ │
│ ├─module2 模块2目录
│ │ ├─config.php 模块配置文件
│ │ ├─common.php 模块函数文件
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录(可选)
│ │ ├─view 视图目录(可选)
│ │ └─ ... 更多类库目录
遵循thinkphp5.0
的命名规范,模块目录全部采用小写和下划线命名。
模块名称请避免使用php保留关键字(保留字列表参见 ),否则会造成系统错误。
其中common
模块是一个特殊的模块,默认是禁止直接访问的,一般用于放置一些公共的类库用于其他模块的继承。
模块类库
一个模块下面的类库文件的命名空间统一以app模块名
开头,例如:
// index模块的index控制器类
appindexcontrollerindex
// index模块的user模型类
appindexmodeluser
其中app
可以通过定义的方式更改,例如我们在应用配置文件中修改:
'app_namespace' => 'application',
那么,index模块的类库命名空间则变成:
// index模块的index控制器类
applicationindexcontrollerindex
// index模块的user模型类
applicationindexmodeluser
更多的关于类库和命名空间的关系可以参考下一章节:命名空间。
模块和控制器隐藏
由于默认是采用多模块的支持,所以多个模块的情况下必须在url地址中标识当前模块,如果只有一个模块的话,可以进行模块绑定,方法是应用的入口文件中添加如下代码:
// 绑定当前访问到index模块
define('bind_module','index');
绑定后,我们的url访问地址则变成:
访问的模块是index
模块。
如果你的应用比较简单,模块和控制器都只有一个,那么可以在应用公共文件中绑定模块和控制器,如下:
// 绑定当前访问到index模块的index控制器
define('bind_module','index/index');
设置后,我们的url访问地址则变成:
访问的模块是index
模块,控制器是index
控制器。
单一模块
如果你的应用比较简单,只有唯一一个模块,那么可以进一步简化成使用单一模块结构,方法如下:
首先在应用配置文件中定义:
// 关闭多模块设计
'app_multi_module' => false,
然后,调整应用目录的结构为如下:
├─application 应用目录(可设置)
│ ├─controller 控制器目录
│ ├─model 模型目录
│ ├─view 视图目录
│ ├─ ... 更多类库目录
│ ├─common.php 函数文件
│ ├─route.php 路由配置文件
│ ├─database.php 数据库配置文件
│ └─config.php 配置文件
url访问地址变成
同时,单一模块设计下的应用类库的命名空间也有所调整,例如:
原来的
appindexcontrollerindex
appindexmodeluser
变成
appcontrollerindex
appmodeluser
更多的url简化和定制还可以通过url路由功能实现。
文档最后更新时间:2018-04-25 17:44:43
未解决你的问题?请到「问答社区」反馈你遇到的问题