Обработка конфигурации в больших проектах PHP? - PullRequest
0 голосов
/ 22 ноября 2018

При создании сайта у меня всегда был один 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.php , или есть причины, по которым я обращаюсь к использованию более ООП подхода к конфигурации?

РЕДАКТИРОВАТЬ:

Я также нашел этот ответ очень полезным: https://codereview.stackexchange.com/questions/79528/standard-and-common-config-file-for-core-php-project?newreg=eb97ce022c9f4e8a98a1e2d3547b767a

1 Ответ

0 голосов
/ 22 ноября 2018

Хорошо использовать файлы конфигурации для всего сайта.Обычно вы используете класс конфигурации для специфичных для библиотеки конфигураций, так что библиотека строго принимает четко определенные объекты конфигурации в качестве своей зависимости вместо массивов.В качестве бонуса вы получаете дополнительное преимущество типа подсказки параметров конфигурации.

...