美文网首页
ThinkPHP 5.0 (八)模块设计

ThinkPHP 5.0 (八)模块设计

作者: Amazing慕丶涵 | 来源:发表于2020-09-01 22:40 被阅读0次

    模块设计

    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保留关键字(保留字列表参见 http://php.net/manual/zh/reserved.keywords.php ),否则会造成系统错误。

    其中common模块是一个特殊的模块,默认是禁止直接访问的,一般用于放置一些公共的类库用于其他模块的继承。

    模块类库

    一个模块下面的类库文件的命名空间统一以app\模块名开头,例如:

    // index模块的Index控制器类
    app\index\controller\Index
    // index模块的User模型类
    app\index\model\User
    

    其中app可以通过定义的方式更改,例如我们在应用配置文件中修改:

    'app_namespace' => 'application',
    

    那么,index模块的类库命名空间则变成:

    // index模块的Index控制器类
    application\index\controller\Index
    // index模块的User模型类
    application\index\model\User
    

    模块和控制器隐藏

    由于默认是采用多模块的支持,所以多个模块的情况下必须在URL地址中标识当前模块,如果只有一个模块的话,可以进行模块绑定,方法是应用的入口文件中添加如下代码:

    // 绑定当前访问到index模块
    define('BIND_MODULE','index');
    

    绑定后,我们的URL访问地址则变成:

    http://serverName/index.php/控制器/操作/[参数名/参数值...]

    访问的模块是index模块。

    如果你的应用比较简单,模块和控制器都只有一个,那么可以在应用公共文件中绑定模块和控制器,如下:

    // 绑定当前访问到index模块的index控制器
    define('BIND_MODULE','index/index');
    

    设置后,我们的URL访问地址则变成:

    http://serverName/index.php/操作/[参数名/参数值...]

    访问的模块是index模块,控制器是Index控制器。

    单一模块

    如果你的应用比较简单,只有唯一一个模块,那么可以进一步简化成使用单一模块结构,方法如下:

    首先在应用配置文件中定义:

    // 关闭多模块设计
    'app_multi_module'  =>  false,
    

    然后,调整应用目录的结构为如下:

    ├─application        应用目录(可设置)
    │  ├─controller      控制器目录
    │  ├─model           模型目录
    │  ├─view            视图目录
    │  ├─ ...            更多类库目录
    │  ├─common.php      函数文件
    │  ├─route.php       路由配置文件
    │  ├─database.php    数据库配置文件
    │  └─config.php      配置文件
    

    URL访问地址变成

    http://serverName/index.php(或者其它应用入口)/控制器/操作/[参数名/参数值...]

    同时,单一模块设计下的应用类库的命名空间也有所调整,例如:

    原来的

    app\index\controller\Index
    app\index\model\User
    

    变成

    app\controller\Index
    app\model\User
    

    更多的URL简化和定制还可以通过URL路由功能实现。

    相关文章

      网友评论

          本文标题:ThinkPHP 5.0 (八)模块设计

          本文链接:https://www.haomeiwen.com/subject/wtsvsktx.html