Менеджер конфигурации для PHP

Я работаю над рефакторингом кода части загрузки конфигурационного файла в PHP. Ранее я использовал несколько 'ini' файлов, но теперь я планирую пойти для единственного XML-файла, который будет содержать все детали конфигурации проекта. Проблема, если кто-то хочет конфигурационный файл в ini или DB, или что-либо еще а не по умолчанию (в этом случае XML), мой код должен обработать ту часть.

Если кто-то хочет пойти для другого параметра конфигурации как ini, он должен будет создать ini файл, подобный моему конфигурационному XML-файлу, и мой менеджер конфигурации должен заботиться все как парсинг, хранящий в кэше. Для этого мне нужен механизм, позволяет, говорят, что надлежащий интерфейс для моих данных конфигурации, где базовое хранилище данных может быть чем-либо (XML, DB, ini и т.д.) также, я не хочу, чтобы это зависело от них лежащих в основе хранилища и в любое время в будущем, это должно быть расширяемо к другим форматам файлов.

6
задан Jack 18 March 2010 в 17:03
поделиться

2 ответа

Предполагая, что вы хотите использовать класс для обработки всего этого, у вас есть 3 варианта:

  1. Назвать базовый класс примерно таким, ReadConfigurationBase , затем 3 класса реализации, ReadConfigurationXML , ReadConfigurationINI и ReadConfigurationDatabase , и вам нужно будет выбрать правильный
  2. То же, что и выше , но используя фабрику для выбора на основе чего-то переданного. Например, если вы передадите config.xml , он будет знать, что должен вернуть ReadConfigurationBase , реализованный с использованием ReadConfigurationXML
  3. Have класс с именем ReadConfiguration , который действует как шаг 2, но создает, содержит и владеет тремя другими классами.

Три небазовых класса просто знают, как читать этот тип файла конфигурации, и передавать информацию обратно в общем виде. думайте в духе интерфейса: вы знаете, что можете получать данные, но вам все равно, как.

Я бы предложил вариант 3, так как он облегчит жизнь. Вам придется вносить небольшие изменения каждый раз, когда вы захотите добавить метод хранения, но это просто добавит немного в класс ReadConfiguration .

Есть способ сделать его на 100% динамичным, но это усложнит ситуацию, и я не думаю, что он вам действительно нужен для этого.

5
ответ дан 16 December 2019 в 21:38
поделиться

Взгляните на Zend_Config . Он предоставляет адаптеры для массивов, Xml и Inis. Как и все компоненты Zend Framework, его можно использовать изолированно от оставшейся платформы. Даже если вы не хотите его использовать, он хорошо спроектирован, и вы можете почерпнуть из него несколько идей для своего собственного менеджера конфигурации.

3
ответ дан 16 December 2019 в 21:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: