Intereting Posts
Добавить Zend_Navigation к представлению со старым устаревшим загрузочным блоком Разделить число на десятичную точку в php Закрытие PHP как необязательный аргумент функции Как получить дату истечения срока действия из файла сертификата SSL в PHP Арифметика даты в PHP Zend Framework: правильный способ взаимодействия с базой данных? Как преобразовать строку в код utf-8 в php Access-Control-Allow-Origin для расширения хрома php: определить, откуда была вызвана функция Покажите один CSS-стиль, если IE и другой, если ff или chrome в .css, используя PHP Удаление комментариев в формате HTML с помощью PHP, но уход из условий Как отправить сообщение POST в Facebook через Graph API с помощью PHP как я могу создать личный поддомен программным образом с помощью php Как получить несколько объединенных данных в одной функции DB Laravel Величина ввода формы на основе выбранного значения параметра

Класс инъекции зависимостей – где хранить конфиги

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

Solutions Collecting From Web of "Класс инъекции зависимостей – где хранить конфиги"

Обычно я держу их в файле за пределами веб-сайта.

Внешний файл конфигурации, который возвращает массив, является быстрым решением:

config.php:

<?php return array( 'database'=> array( 'host'=> 'localhost', 'dbname'=> 'name_of_db', 'username'=> 'myusername', 'password'=> 'mypassword', ), ); 

test.php:

 <?php $config = include('config.php'); mysql_connect($config['database']['host'], $config['database']['username'], $config['database']['password']); .... 

В идеале сохраните файл конфигурации в каталоге, который может быть прочитан анонимным веб-пользователем (но не написан).

Это трудно получить «правильно», потому что это зависит от конкретного варианта использования. Но вот что я сделал, когда у меня была очень похожая проблема.

Я установил общую библиотечную систему для небольшого количества веб-сайтов. Первоначально он предоставлял только обработчик базы данных, но был быстро добавлен уровень ORM. Большая часть роста после этого была дополнительным объектом, так как один из сайтов был переписан от прямого SQL к объектно-ориентированному доступу. Была также библиотека конфигурации, используемая для определения того, как объекты и другие элементы в общей библиотеке собирались вместе в «модули», а также настройки по умолчанию для таких вещей, как настройки базы данных. Он также поддерживал загрузку файла конфигурации за пределами дерева кодов, который использовался для настроек для каждого узла.

Поскольку объекты в слое ORM должны были настраиваться (это было статический вызов, чтобы сделать это, поскольку они были объявлены), было тривиально, чтобы он был расширен, чтобы запросить конкретную базу данных по имени. Затем нужно было убедиться, что все эти определения баз данных также были объявлены (и были преодолены благодаря универсальному механизму конфигурации).

(Это заняло некоторое время, но когда мы достигли точки разделения базы данных, было очень легко указать соответствующие объекты в другую базу данных, и все просто продолжало работать.)

Чтобы ответить на ваш вопрос, конфигурация была разделена. Имена и имена пользователей, имена пользователей и пароли были названы и определены в одном месте в области конфигурации кода. Но они могут быть переопределены на основе каждого узла. На объекты объекта были объявлены объекты. И это было также там, где конфигурации базы данных были указаны по имени.