我需要一个好的配置文件格式。我计划将其转化为表格模式,就像Symfony、Ruby on Rails等框架一样。对于配置文件,最好使用哪种文件格式?YAML、XML还是JSON编码文件?对于这个目的,哪一种最好?
我需要一个好的配置文件格式。我计划将其转化为表格模式,就像Symfony、Ruby on Rails等框架一样。对于配置文件,最好使用哪种文件格式?YAML、XML还是JSON编码文件?对于这个目的,哪一种最好?
*.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'];
正如其他人所说,你有很多选择。除非你有一个非常好的理由(想不到任何理由),否则不要自己发明(即编写解析器)。只需评估你的选项:
例如,PHP提供了非常简单的serialize()和unserialize()函数。但是,该格式并不像XML那样容易被人类阅读/编辑(XML可能也很难读取,但比PHP格式容易得多。Python的pickle模块甚至更糟糕)。如果你需要在其他语言中访问数据,这是一个不好的选择。还要考虑其他人的情况-最近我必须在我的python项目中解析来自Horde项目的PHP序列化数据!JSON是更好的选择,因为它是人类可读的(如果“漂亮打印”并非紧凑形式!),可由人类编辑,并且现今每种主要的编程语言都支持JSON。但是,你会失去向后兼容性,例如对于python,JSON需要2.6+版本。
parse_ini_file()
)在这个被接受的答案中缺失。除此之外,这个答案提供了一些很好的细节。 - BysonJSON 是我认为很好的选择。你可以将数据库模式定义为以下形式:
{
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}";
}
}
表table1有一个名为id的记录
表table1有一个名为some_field的记录
在我看来,JSON比XML更易于使用,json_encode/decode非常快,因此开销很小。 在我看来,它比XML更可读,并且比INI文件更适合处理复杂的数据结构。 有些人喜欢YAML,但语法上真的没有太大区别。XML在这方面是最好的选择,因为大多数编程语言都提供了读取XML文件的API。
我的偏好是
就像 WordPress 和无数其他 PHP 应用程序一样使用的那样。
json_encode()
和json_decode()
进行编码和解码比读写ini文件更有效。但是,json的缺点是不易于人类阅读。您需要使用php脚本来编码配置文件。当您想要在网站管理员部分编写配置时,可以很好地使用此解决方案。