Не существует «лучшего» решения для всех целей.Вот несколько примеров, как вы можете это сделать:
Простой файл PHP:
Это решение очень простое, но не очень гибкое: вы просто «определяете» константы:
define('SITE_NAME', 'all about Foo');
define ('ADMIN_NAME', 'The Dude');
define ('ADMIN_MAIL', 'dude@foo.com');
Pro: очень очень просто.
Минусы: изменения требуют редактирования кода.Только плоские ключи (без дерева / реестра)
INI-файл
PHP поставляется с функциями для анализа INI-файлов.Вот пример из руководства по php:
; This is a sample configuration file
; Comments start with ';', as in php.ini
[first_section]
one = 1
five = 5
animal = BIRD
[second_section]
path = "/usr/local/bin"
URL = "http://www.example.com/~username"
[third_section]
phpversion[] = "5.0"
phpversion[] = "5.1"
phpversion[] = "5.2"
phpversion[] = "5.3"
Вы можете проанализировать это в многомерном массиве:
$ini_array = parse_ini_file("sample.ini", true);
print_r($ini_array);
Будет выводить:
Array
(
[first_section] => Array
(
[one] => 1
[five] => 5
[animal] => Dodo bird
)
[second_section] => Array
(
[path] => /usr/local/bin
[URL] => http://www.example.com/~username
)
[third_section] => Array
(
[phpversion] => Array
(
[0] => 5.0
[1] => 5.1
[2] => 5.2
[3] => 5.3
)
)
)
Pros: lexible.Хорошо известный стандартный синтаксис.
Минусы: трудно редактировать в бэкэнде
См .: http://php.net/manual/de/function.parse-ini-file.php
Простой SQL
Еще один простой подход, но он использует базу данных для хранения ключей conig.Структура таблицы:
config{config_name UNIQUE KEY VARCHAR[64] ; config_value VARCHAR[128]}
Это всего лишь псевдокод, и вам нужна дополнительная информация о PHP и SQL, чтобы свободно использовать его в Google.
Дерево SQL Позволяетвам создать древовидную структуру.Чтобы заархивировать это, вы используете ту же структуру таблиц, но включаете в свои имена ключей '/':
admin/name | 'The Dude'
admin/mail | 'dude@foo.com'
Затем вы загружаете свою полную конфигурацию в массив и анализируете ее:
function parseRawConfig($rawConfig){
$result = array();
foreach($rawConfig as $key => $value){
$nodeNames = explode('/',$key);
$nodeCount = count($nodes);
$node = $result;
for($i=1;$i<$nodeCount;$i++){
if(!array_key_exists($nodeNames[$i],$node)){
$node[$nodeNames[$i]] = array();
}
}
$node[$nodeNames[$nodeCount-1]] = $value;
}
return $result;
}
Затем вы можете получить доступ к своим ключам следующим образом:
echo $config['admin']['mail'];
Это упрощает создание красивого древовидного представления для вашего бэкэнда, но для сохранения изменений вам придется «восстановить» исходный путь.
Pro: структурированные иерархические данные.
Con: Сложный, сложный в реализации, требует подключения к базе данных
XML Запишите все ваши настройки conig в xml-файле.Вы можете использовать специфичный для приложения xml или общий реестр, например style:
<cmsConf>
<site>all about foo</site>
<admin>
<name>The Dude</name>
<mail>dude@foo.com</mail>
</admin>
</cmsConf>
<reg>
<key name="site">all about foo</key>
<node name="admin">
<key name="name">The Dude</key>
<key name="mail">dude@foo.com</key>
</node>
</reg>
PHP предоставляет множество классов и функций для чтения / записи xml, а использование xml действительно упрощает создание интерфейсов для других приложений..
Плюсы / минусы XML - огромная тема.Слишком много, чтобы суммировать их в нескольких предложениях.
ВАЖНО Это всего лишь несколько очень простых примеров, и если вы выберете один, я рекомендую углубиться в тему!
Моя любимая это XML;)