访问其他文件中的变量,而不将它们设置为全局变量

时间:2017-05-02 18:20:27

标签: php

我希望有一个适用于配置设置的类。配置设置存储在config/目录中,我希望将它们分隔到文件中。当我打电话给我时

Config::gi()->getConfig('config_name') 

我希望Config类能够访问文件config/config_name.cfg.php并返回名称完全相同的数组(来自该文件)。

这是因为我不想读取所有配置数据(如果不需要)。另外,我有点担心在$GLOBALS变量中设置配置并不是最佳解决方案。我想过要求或包含那些文件然后返回它们的内容,但它似乎也有点不专业。

阅读这样的配置的最佳做法是什么?提前谢谢。

例如: 配置/ routes.cfg.php

$routes => [
    'index' => new Route([
        // route config here ...
    ])
];

要获取routes数组,我将从Config::gi()->getConfig('routes');类执行helpers/Config.php

1 个答案:

答案 0 :(得分:1)

我不确定我会不会这样做,我可能会在第一次将所有配置(最有可能是从一个文件中)加载到课堂中并从那里开始。如果您不想在更改时写出数组,也可以查看parse_ini_file()。但就你的情况而言,只需:

public function getConfig($name) {
    if(file_exists("config/$name.cfg.php")) {
        include("config/$name.cfg.php");
        return ${$name}; //this translates to $routes in your example
    }
    return false;
}

此外,下一个逻辑问题可能是如何在配置发生变化时保存配置:

public function setConfig($name, $data) {
    file_put_contents("config/$name.cfg.php", "$name = " . var_export($data, true) . ";");
}

$routes = array(/* with some stuff in it */);

Config::gi()->setConfig('routes', $routes);