在大型PHP项目中处理配置?

时间:2018-11-22 17:31:33

标签: php configuration configuration-files

创建网站时,我总是只有一个config.php文件,其中包含一堆常量,并且将其包含在每个PHP文件的顶部:

1。 config.php

// config.php

$hostname = get_user();
define("HOME", "/home/$hostname/my/website");

define("DB_USER", 'username');
define("DB_PASS", 'password');

这很容易,我从来没有遇到过问题。但是这是在大型PHP网站中处理配置的标准方法吗?

我认为最好将所有配置包含在一个类中,如下所示:

2。配置类

class Config {

    public $home;

    const DB_USER = 'username';
    const DB_PASS = 'password';

    function __construct() {
        $hostname = get_current_user();
        $this->home = "/home/$hostname/my/website";
    }

}

但这似乎会使配置更加复杂,因为:

  1. 我现在不仅需要包含文件,还需要首先实例化Config对象。
  2. 我需要混合使用属性和类常量,因为配置的某些部分是动态设置的。
  3. 整个代码并不十分简单。

摘要。

我意识到该类提供了命名空间,但是将config放入这样的类中还有什么好处呢?

简而言之,现在仍然坚持经典的config.php文件还可以吗,还是出于某些原因我希望使用一种更加面向对象的配置方法?

编辑:

我还发现此答案非常有帮助:https://codereview.stackexchange.com/questions/79528/standard-and-common-config-file-for-core-php-project?newreg=eb97ce022c9f4e8a98a1e2d3547b767a

1 个答案:

答案 0 :(得分:1)

可以使用站点范围内的配置文件。您通常将config类用于特定于库的配置,以便库仅严格接受定义良好的配置对象作为其依赖项,而不是数组。另外,您还可以通过类型提示配置参数来获得额外的好处。