Мне нужен хороший формат файла конфигурации. Я планирую применить схему таблицы. Как symfony, ruby on rails и т.д. Каков наилучший формат файла для файла конфигурации? Ямл или XML или JSON закодированный файл? Что лучше для этой цели?
Каков наилучший формат файла для файла конфигурации?
Ответ 1
Как заявили другие, у вас есть множество вариантов. Просто не изобретайте (то есть пишите парсеры) сами по себе, если у вас нет действительно, действительно веских оснований для этого (не могу придумать). Просто оцените свои варианты:
- Вам нужно получить доступ к этим данным вне моего приложения (на другом языке).
- Вы хотите, чтобы пользователи (или сами) могли редактировать файл с помощью простого текстового редактора.
- Вам нужна обратная совместимость со старыми версиями используемого языка.
Например, PHP предоставляет очень простые функции serialize() и unserialize(). Формат, однако, не так легко читается/редактируется людьми (XML также трудно читать, но не так сложно, как в формате PHP. Python pickle module еще хуже). Если вам когда-либо понадобится доступ к данным с другими языками, это плохой выбор. И подумайте о других - недавно я решил проанализировать сериализованные данные PHP из проекта Horde в моем проекте python! JSON - гораздо лучший выбор, потому что его читаемый человеком (если его "довольно печатный", а не в сжатой форме!), Редактируемый человеком и каждый основной язык имеет поддержку JSON в наши дни. Однако вы потеряете обратную совместимость, например. с python, JSON требует версию 2.6 +.
Ответ 2
*.ini
должен быть очень хорош для этого
[MyApp]
var1 = "foo"
var2 = "bar"
[MyPlugin]
var1 = "qwe"
Вы можете легко прочитать его, используя parse_ini_file()
$config = parse_ini_file('/path/to/config/file', true);
echo $config['MyApp']['var2'];
Ответ 3
JSON - хороший выбор, на мой взгляд. Вы можете определить схему своей базы данных как таковую:
{
table1: {
id: {
type:"int",
autoincrement:true
},
some_field: {
type:"string",
}
},
table2: { // etc
}
}
Затем просто используйте json_decode, чтобы превратить это в массив PHP.
например.
$tables = json_decode($json_text);
foreach ($tables as $tablename => $t) {
foreach ($t as $fieldname => $field) {
echo "Table {$tablename} has a record called {$fieldname}";
}
}
Это будет печатать:
Table table1 has a record called id
Table table1 has a record called some_field
JSON гораздо проще работать с XML, на мой взгляд, и json_encode/decode очень быстро, так что немного накладных расходов. На мой взгляд, это также намного более читаемо, чем XML, и лучше справляется со сложными структурами данных, чем файлы INI. Некоторые люди предпочитают YAML, но в синтаксисе действительно нет большой разницы.
Ответ 4
XML лучше для этой цели, поскольку большинство программ langauge privide API читают файлы XML.
Ответ 5
Что вы планируете разместить там?
У вас есть множество вариантов:
- XML с пользовательскими тегами
- пары Key-Value на каждой новой строке
- SQLite?
Ответ 6
Мое предпочтение
- хорошо документированный php файл
- для конкретной конфигурации пользователя
так же, как wordpress и множество других приложений php используют
Ответ 7
Недавно Joomla переключилась с ini файлов на JSON-кодированные файлы. Кодирование и декодирование json с использованием json_encode()
и json_decode()
выполняется лучше, чем чтение и запись ini файлов.
Однако есть недостаток: json не легко читается человеком. Для кодирования вашего файла конфигурации вам необходимо использовать php script. Вы можете использовать это решение, когда хотите написать свой конфиг в административной части вашего сайта.
Ответ 8
Ребята действительно дали вам хорошие ответы. Лично мне нравятся файлы .ini вне вашего корня документа. Также убедитесь, что (если вы работаете в linux hosting env), что ваш файл доступен только для чтения на вашем веб-сервере и не доступен для записи.
Затем вы можете просто проанализировать INI файл и использовать такие параметры конфигурации. (это, если вы используете такой язык, как PHP или так, JavaScript ect не будет работать здесь.)
Но это, как они сказали. Все зависит от того, какие данные вы хотите иметь в своем файле конфигурации и что вы хотите с ним делать.
Отношения Conrad c '',)