Примечание: Конфигурация хранится в файле 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 уже нежизнеспособен.Третий вариант тоже не слишком чистый.
При написании этого я получаю большое предупреждение о том, что обсуждение субъективно и закрыто.Так что пожалуйста следите за темой и приведите веские причины для ваших ответов.
Это довольно очевидный вопрос, и, учитывая, что я хорошо знаком с разными ответами, вы можетеСпросите, почему я делаю всю эту суету?Дело в том, что я разрабатываю фреймворк, и в отличие от других фреймворков (* ahem * joomla * ahem *), я не хочу пропустить их ошибку, заключающуюся в том, что они добавили неверное решение, которое в итоге должно быть изменено /переопределено в будущем.
Редактировать: Во-первых, расположение файла конфигурации меня не касается.Я позабочусь, чтобы люди могли легко менять местоположение, если они этого хотят, но это не будет требованием .Во-первых, дешевые хостинги не позволяют этого делать, во-вторых, что касается безопасности, то это действительно плохой вариант.Зачем?Потому что фреймворк должен знать, где находится конфиг.Действительно, безопасность через неизвестность не работает .Я бы предпочел исправить все RFI и XSS (например), чем быть параноиком при сокрытии файла конфигурации под несколькими слоями.