Примечание. Конфигурация хранится в файле PHP config.php
.
Я видел, как это делалось по-другому, вот краткий список примеров (в этих примерах я храню информацию о БД):
Константы: глобальные, только для чтения
define('DB_USER','user12');
define('DB_PASS','21user');
Использование массива GLOBALS: глобальный, изменяемый, повторяющийся, смешанный с другими глобальными переменными
$GLOBALS['DB_USER']='user12';
$GLOBALS['DB_PASS']='21user';
Использование неглобального массива, но поднятого глобально: возможно, хуже, чем второй вариант
$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 уже неприменим. Третий вариант тоже не слишком чистый.
Пока я пишу это, я получаю большое предупреждение о том, что обсуждение является субъективным и закрытым. Так что пожалуйста следите за темой и приводите веские причины для своих ответов.
Это довольно очевидный вопрос, и, учитывая, что я хорошо знаком с разными ответами, вы можете спросить, почему я так поднимаюсь? Дело в том, что я разрабатываю фреймворк и, в отличие от другого фреймворка (* кхм * joomla * кхм *), я не хочу пропустить их ошибку, добавив неверное решение, которое в конечном итоге необходимо изменить / перенацеливание в будущем.
Изменить: Во-первых, расположение файла конфигурации меня не интересует. Я позабочусь о том, чтобы люди могли легко изменить местоположение, если захотят, но это не будет требованием. Во-первых, дешевые хосты не позволяют этого сделать, во-вторых, с точки зрения безопасности это действительно не лучший вариант. Почему? Потому что фреймворк должен знать, где находится конфиг. На самом деле безопасность через безвестность не работает. Я лучше исправлю все RFI и XSS (например), чем буду параноиком скрывать файл конфигурации на нескольких уровнях.
The configuration might need to be changed some time during the running of the system, so option 1 is already not viable
- звучит не очень хорошо! Вся идея файла конфигурации заключается в том, что вы определяете константы с общими настройками сайта, такими как настройки базы данных, возможно, заголовки страниц и т. Д. Какие вещи вы храните, которые вы могли бы захотеть изменить? - person chigley   schedule 08.10.2010