ThinkPHP3.0完全开发手册                                           

 

5.6   模块分组

模块分组功能是为了更好的组织已有的模块,并且增加项目容量的一个有效机制。分组功能可以把以往的多项目合并到一个项目中去,这样一来,之前需要采用跨项目操作的地方,现在因为在一个项目中从而免去了不少麻烦,并且公共文件的重用也方便了,并且每个分组都可以有自己独立的配置文件、公共文件、语言包,在URL的访问上面也非常清晰。

模块分组相关的配置参数包括:

配置参数

说明

APP_GROUP_LIST

项目分组列表(配置即表示开启分组)

DEFAULT_GROUP

默认分组(默认值为Home

TMPL_FILE_DEPR

分组模板下面模块和操作的分隔符,默认值为“/

VAR_GROUP

分组的URL参数名,默认为g(普通模式URL才需要)

要启用分组模块非常简单,配置下APP_GROUP_LIST参数和DEFAULT_GROUP参数即可。

例如我们把当前的项目分成HomeAdmin两个组,分别表示前台和后台功能,那么只需要在项目配置中添加下面的配置:

多个分组之间用逗号分隔即可,默认分组只允许设置一个。

在我们启用项目分组之前,由于使用的两个项目,所以URL地址分别是:

http://serverName/index.php/Index/index Home项目地址

http://serverName/Admin/index.php/Index/index Admin项目地址

采用了分组模式后,URL地址变成:

http://serverName/index.php/Home/Index/indexHome分组地址

如果Home是默认分组的话 还可以变成 http://serverName/index.php/Index/index

http://serverName/index.php/Admin/Index/indexAdmin分组地址

如果设置了隐藏index.php的话,两者的URL表现效果基本上是一致的,但是从管理和公共调用的角度来看,确实方便了不少。当使用分组模式时,目录结构只是做了一点小小的扩展,分组和普通模块的项目目录区别如下:

项目目录

分组(HomeAdmin分组为例)

不分组

公共目录

Common

Home分组:Common/Home/function.php

Admin分组:Common/Admin/function.php

公共文件:Common/common.php

Common/common.php

配置目录

Conf

Home分组:Conf/Home/config.php

Admin分组:Conf/Admin/config.php

公共配置:Conf/config.php

Conf/config.php

Action目录

Home分组:Lib/Action/Home/

Admin分组:Lib/Action/Admin/

公共ActionLib/Action/

Lib/Action/

Model 目录

Lib/Model/

Lib/Model/

语言包目录(Lang zh-cn为例)

Home分组:Lang/zh-cn/Home/lang.php

Admin分组:Lang/zh-cn/Admin/lang.php

公共语言包:Lang/zh-cn/common.php

Lang/zh-cn/common.php

模板目录(Tpltheme主题为例)

Home分组:Tpl/Home/theme/

Admin分组:Tpl/Admin/theme/

Tpl/theme/

运行时目录(Runtime

Home分组:Runtime/Home/

Admin分组:Runtime/Admin/

Runtime/

注意:分组目录的公共文件名称和语言包名称和公共的文件有一定的命名方式不同。

对于分组模式下面的Model类库是否需要分组完全看项目的需要,由于通常不同的分组对应的数据表是相同的,因此,我们推荐Model类库不分组存放,仍然保留之前的方式,无论是什么分组都公共调用Model类库。如果确实需要分组的话,仍然可以按照Action的方式,在Model目录下面创建HomeAdmin目录,然后放入对应的Model类库,采用这种方式的话,模型类的调用方法有所区别。

模板文件的分组和Action类库分组也基本类似,在原来的模板主题目录下面增加一个分组目录即可。

例如:

Tpl/Home/Index/index.html

Tpl/Admin/User/index.html

相比之前的模板文件位置就是多了一个分组目录HomeAdmin,如果觉得目录结构太深了,可以配置 TMPL_FILE_DEPR参数 来减少目录层次,该参数默认是 “/”,如果改成

'TMPL_FILE_DEPR'=>'_'

那么分组的模板文件就变成了

Tpl/Home/Index_index.html

Tpl/Admin/User_index.html

分组模块的概念,并不局限于将项目区分为前台和后台。你可以按自己所需类型,进行明确细致的区分,这样非常方便于项目管理和开发部署。

分组模块下面的具体模块和之前的模块功能没有任何区别,已有的URL和模块功能都可以很好的支持,例如空模块、空操作、伪静态等等。

更多的关于分组模式下面URL方面的区别可以查看URL生成部分的U方法的使用。


NetPc