ThinkPHP V5.1.18 跨模块调用作用域问题

1、分别有a模块和b模块,它们都有各自config配置文件

2、我在a模块里调用b模块控制器中的函数,该函数却使用了a模块的config配置

3、我怎么才能让它使用b模块中的配置文件

阅读 3.7k
1 个回答

这是tp5的机制,自动默认加载当前模块下的配置文件。可以调用b模块的函数前,先动态加载b模版的函数。

Config::load(APP_PATH.'b/config.php');

我看一下tp5.1的源码, config的load类如下。

/**
 * 加载配置文件(多种格式)
 * @access public
 * @param  string    $file 配置文件名
 * @param  string    $name 一级配置名
 * @return mixed
 */
public function load($file, $name = '')
{
    if (is_file($file)) {
        $name = strtolower($name);
        $type = pathinfo($file, PATHINFO_EXTENSION);
        if ('php' == $type) {
            return $this->set(include $file, $name);
        } elseif ('yaml' == $type && function_exists('yaml_parse_file')) {
            return $this->set(yaml_parse_file($file), $name);
        }
        return $this->parse($file, $type, $name);
    }
    return $this->config;
}

file的参数可以如下:

$obj->load('../application/b/config.php');

不嫌麻烦的,我建议定义一个常量APP_PATH

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进