Обработка конфигурации в больших проектах 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

Файлы конфигурации должны быть именно такими. Файлы. Нет ничего хуже, чем попытка автоматизировать развертывание файла конфигурации неопределенного формата и содержащего исполняемую логику. Выберите что-то вроде INI, JSON, YAML и т. д., И пусть ваша конфигурация класс ничего не делает, кроме анализа конфигурации файл.

Sammitch 22.11.2018 18:39

@Sammitch Спасибо, я не рассматривал возможность использования более простого файла JSON или JSON для конфигурирования и его синтаксического анализа с использованием кода оттуда.

inersha 22.11.2018 22:35
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
73
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Другие вопросы по теме