Примечание: Конфигурация хранится в файле PHP, config.php
.Каков наилучший способ (кодирование) для хранения конфигурации системы в приложении PHP?
Я видел это сделать по-другому, вот краткий список примеров (я хранить данные в БД этих примерах):
Константы: глобальный, только для чтения
define('DB_USER','user12');
define('DB_PASS','21user');
Использование GLOBALS массива: глобальный, изменчиво, повторяющиеся, смешанные с другими глобал
$GLOBALS['DB_USER']='user12';
$GLOBALS['DB_PASS']='21user';
Используя неглобальный массив, но подняли globaly: возможно, хуже, чем 2-й варианта
$config=array(); ...
$config['DB_USER']='user12';
$config['DB_PASS']='21user';
... global $config;
mysql_connect('localhost',$config['DB_USER'],$config['DB_PASS']);
Определение свойств класса: (глобальный, перечислимы)
class Config {
public $DB_USER='user12';
public $DB_PASS='21user';
}
Критерии/Опции/Особенности:
- простота кодирования: вы не хотели бы, чтобы проверить, настройка существует или инициализируется
- легкость модификации: не-программист/неспециалист может легко изменить настройки
- хранить в чистом месте: не смешивается с другими переменными (может быть сохранены в подрешетке)
- модификации выполнения: в некоторых случаях, другие разработчики могут легко изменить существующие настройки
Возможно, потребуется изменить конфигурацию в течение некоторого времени во время работы системы, поэтому вариант 1 уже не является жизнеспособным. Третий вариант тоже не слишком чист.
При написании этого сообщения я получаю большое предупреждение о том, что обсуждение является субъективным и закрытым. Итак, , пожалуйста, не отставайте от темы и дайте обоснованные причины своим ответам.
Это довольно очевидный вопрос, и учитывая, что я хорошо знаком с различными ответами, вы можете спросить, почему я делаю всю эту суету? Дело в том, что я разрабатываю фреймворк и, в отличие от другой структуры (* ahem * joomla * ahem *), я не хочу проходить через их ошибку, бросая в ошибочное решение, которое в конечном итоге должно быть изменено/повторно назначается в будущем.
Edit: Прежде, расположение конфигурационного файла меня не касается. Я буду уверен, что люди могут легко изменить местоположение, если захотят, но это не будет требование. Первый, дешевые веб-хосты не позволяют это делать, во-вторых, насколько безопасность идет, это действительно не очень хороший вариант. Зачем? Потому что структура должна знать, где находится конфиг. Действительно, безопасность через неясность не работает.Я бы предпочел исправить все RFI и XSS (например), чем быть параноидальными, скрывая файл конфигурации под несколькими слоями.
Возможный дубликат [Что является лучшим способом хранения переменных конфигурации в PHP?] (Http: // stackoverflow .com/questions/593440/what-is-the-best-way-to-store-configuration-variables-in-php) – alex
'Возможно, потребуется изменить конфигурацию некоторое время во время работы системы, поэтому опция 1 уже не жизнеспособна' - звучит не очень хорошая система! Вся идея файла конфигурации заключается в том, что вы определяете ** константы ** с общими настройками сайта, такими как настройки базы данных, возможно, названия страниц и т. Д. Какие вещи вы храните, что вы можете изменить? – chigley
Вот как это работает: класс PHP, база данных, работает с константами конфигурации DB_ ?, кто-то может захотеть написать скрипт для синхронизации двух БД (в качестве примера), но не может использовать класс базы данных, потому что он не может измените константы .... ОК, это довольно хромой пример, я не могу придумать лучшего. Надеюсь, ты получишь идею. – Christian