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

Handling config in large PHP projects?

制作网站时,我总是只有一个 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 网站中处理配置的标准方式吗?

我认为将所有配置包含在 class 中可能会更好,如下所示:

2。配置 class

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. 我需要混合使用属性和 class 常量,因为配置的某些部分是动态设置的。
  3. 整体代码并不那么简单。

总结.

我知道 class 提供了命名空间,但是像这样将配置放入 class 有什么更好的好处吗?

简而言之,这些天坚持使用 classic config.php 文件 是否仍然完美无缺,或者有什么原因让我期待使用更面向对象的配置方法?

编辑:

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

可以使用站点范围的配置文件。您通常会对特定于库的配置使用配置 class,以便库仅严格接受定义明确的配置对象作为其依赖项而不是数组。作为奖励,您可以获得类型提示配置参数的额外好处。