Neil Developer

Thinkphp独立分组模式下,每个分组的单独配置文件config.php位置在哪里

2014-01-01
Neil

我使用的是Thinkphp 3.1.3,  也就是今天的3.1最新版本。 其实官方3.2已经正式发布了, 看了一下,改变比较多,而且不兼容,所以暂时先不升级了。

我配置了三个独立分组:

'APP_GROUP_LIST'=>'Home,Admin,SN',
 'DEFAULT_GROUP'=>'Home',
 'APP_GROUP_MODE'=>1,

我需要对其中一个分组使用单独的config.php

按照官方的文档:http://doc.thinkphp.cn/manual/group_config.html

--------------------------------------------------------------------------------------------------------------------


如果启用了模块分组,则可以在对每个分组单独定义配置文件,分组配置文件位于:
项目配置目录/分组名称/config.php
可以通过如下配置启用分组:
  1. 'APP_GROUP_LIST' => 'Home,Admin', //项目分组设定
  2.  'DEFAULT_GROUP'  => 'Home', //默认分组
现在定义了Home和Admin两个分组,则我们可以定义分组配置文件如下:
Conf/Home/config.php
Conf/Admin/config.php
每个分组的配置文件仅在当前分组有效,分组配置的定义格式和项目配置是一样的。

 

-----------------------------------------------------------------------------------------------------------------

但是,不知道为什么就是不起作用,这问题困扰了我很久。 网上找到的所有答案都是从官方文档拷的,所以也一样。幸好Thinkphp是开源的。没办法,咱只有读代码了。

在Thinkphp/LIb/Core/Dispatcher.class.php 中找到 dispatch() 函数, 再找到大概 163 行,有个注释:

// 加载分组配置文件
 if(is_file($config_path.'config.php'))
     C(include $config_path.'config.php');

这里就是在加载分组的独立配置文件了。

再倒回去10行左右, 找到 "$config_path" 的定义:

// 定义项目基础加载路径
define('BASE_LIB_PATH', (defined('GROUP_NAME') && C('APP_GROUP_MODE')==1) ? APP_PATH.C('APP_GROUP_PATH').'/'.GROUP_NAME.'/' : LIB_PATH);

结合这两个定义,可以知道,官方的文档说的是错的。  独立分组的配置文件正确的位置在:(以Admin分组为例)

Admin/Config/config.php

这个Admin就是你的分组目录, 不是在Config目录下新建的Admin目录。 全路径看起来应该是这样的:

/app/Modules/Admin/Config/config.php

打完收工。


上一篇 174

Comments

Content