Конфигурация — Обработка конфигурации в больших проектах PHP?

При создании сайта у меня всегда был только один 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

Решение

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector