Что самый быстрый путь состоит в том, чтобы хранить данные конфигурации в PHP так, чтобы это было легко изменяемо (через PHP)? Сначала я думал о наличии config.php файл, но я не могу отредактировать его на мухе с PHP, по крайней мере, не очень просто? Тогда я думал о наличии XML-файлов, но парсинг их для каждого Запроса HTTP является подавляющим. Так, я думал о файлах INI, но тогда я полагал, что файлы INI ограничиваются значениями интервала/строки. В конце я пришел к выводу, что закодированный файл JSON является лучшим:
$config['database']['host'] = ...;
$config['another']['something'] = ...;
...
json_encode($config);
Так как JSON может сохранить массивы, я могу создать довольно сложные конфигурации с ним, и он анализирует быстрее, чем файлы INI.
Мой вопрос: я пропускал что-то или являюсь там лучшим способом сделать это?
Сериализация - лучший вариант, чем JSON для хранения переменных PHP.
Мне нравится использовать var_export
для сохранения файла конфигурации и использовать include
для загрузки информации конфигурации. Это упрощает программное сохранение данных конфигурации И упрощает чтение / запись данных для человека:
config.php:
return array(
'var1'=> 'value1',
'var2'=> 'value2',
);
test.php:
$config = include 'config.php';
$config['var2']= 'value3';
file_put_contents('config.php', '<?php return ' . var_export($config, true) . ';');
Обновленный config.php теперь содержит следующее:
return array(
'var1'=> 'value1',
'var2'=> 'value3',
);
]Вы должны использовать сериализацию в отличие от json_encode:[
] []]Способ хранения конфигурации - поместить некоторые переменные во внешний .php файл, а затем, когда я захочу использовать эти файлы, я скажу:[
] [][][
][
]И это позволит вам обмениваться конфигурационной информацией на многих страницах. Я, однако, не уверен, что это самый эффективный метод, но мне показалось, что он самый простой.[
].]Я уверен, что вы правы насчет значений int/string и да, JSON - это способ, но сериализация и несериализация строки будет быстрее для оптимизации скорости:[
] []Эта ссылка поможет вам:[
] []Хотя это, скорее всего, излишек для того, что вам нужно, но я обычно сохраняю данные конфигурации в базе данных, используя класс PHP для управления изменениями пар имя / значение. в. (т.е. нет прямого доступа к БД извне этого класса.)
Когда вызывается класс конфигурации PHP для изменения значения, он затем записывает стандартный включаемый файл PHP со всеми различными значениями, определенными в нем.
Таким образом, при чтении данных конфигурации не снижается производительность во время загрузки, и все данные конфигурации могут быть изменены в базе данных с помощью модуля CMS.
Я использую базу данных с таблицей под названием config или settings. Таблица состоит из двух столбцов:
name [varchar(255)]
value [varchar(255)]
Это позволяет легко хранить строки типа int, float и short.
Затем я создаю две функции: GetSetting и SetSetting. Они хранят строку и извлекают строку соответственно. Я считаю, что это значительно упрощает хранение значений.