我需要一个好的配置文件格式.我计划推出表架构.像symfony,ruby on rails等.配置文件的最佳文件格式是什么?Yaml或XML或JSON编码的文件?哪个最适合这个目的?
RaY*_*ell 14
*.ini
应该是相当不错的
[MyApp]
var1 = "foo"
var2 = "bar"
[MyPlugin]
var1 = "qwe"
Run Code Online (Sandbox Code Playgroud)
您可以使用它轻松阅读 parse_ini_file()
$config = parse_ini_file('/path/to/config/file', true);
echo $config['MyApp']['var2'];
Run Code Online (Sandbox Code Playgroud)
c08*_*089 14
正如其他人所说,你有很多选择.只是不要自己发明(即写解析器)这样的事情,除非你有一个非常,非常好的理由(不能想到任何).只需评估您的选择:
例如,PHP提供了非常简单的serialize()和unserialize()函数.然而,这种格式并不像人类那样容易阅读/编辑(XML也很难读,但不像PHP格式那么难.Python的pickle模块更糟糕.).如果您需要使用其他语言访问数据,这是一个糟糕的选择.并想想其他人 - 我最近在我的python项目中解析来自Horde项目的PHP序列化数据!JSON是一个更好的选择,因为它是人类可读的(如果它的"漂亮印刷",而不是压缩形式!),人类可编辑,并且现在每种主要语言都有JSON支持.但是,您将失去向后兼容性,例如使用python,JSON需要2.6+版本.
在我看来,JSON是一个不错的选择。您可以这样定义数据库架构:
{
table1: {
id: {
type:"int",
autoincrement:true
},
some_field: {
type:"string",
}
},
table2: { // etc
}
}
Run Code Online (Sandbox Code Playgroud)
然后使用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}";
}
}
Run Code Online (Sandbox Code Playgroud)
这将打印:
Table table1 has a record called id Table table1 has a record called some_field
在我看来,JSON 比 XML 更容易使用,并且 json_encode/decode 非常快,因此开销很小。在我看来,它比 XML 更具可读性,并且比 INI 文件更好地处理复杂的数据结构。有些人更喜欢 YAML,但语法上确实没有太大区别。