Модель настроек в таблице конфигурации - PullRequest
0 голосов
/ 14 июля 2011

В настоящее время я храню некоторые настройки в таблице базы данных. Содержит 2 поля (имя_установки, значение_установки).

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

Кроме того, я должен кэшировать эти настройки (получение их - фактически только 1 запрос на загрузку страницы), поскольку некоторые люди, кажется, рекомендуют это?

Спасибо

Ответы [ 2 ]

2 голосов
/ 14 июля 2011

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

$config = $this->container->get('configuration');
do_something($config['bar']);
1 голос
/ 14 июля 2011

Решением этой проблемы является шаблон Singleton.

У вас должен быть один класс экземпляра со статическими методами для получения значений конфигурации:

Config::getConfigData($conf_key)

Кэширование: это зависит от того, сколько данных конфигурации у вас есть в вашей БД. Я предлагаю кэшировать их, а не выполнять запрос каждый раз, когда вам нужно значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...