配置文件的最佳文件格式是什么?

Zec*_*eck 11 php

我需要一个好的配置文件格式.我计划推出表架构.像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+版本.


Rob*_*ght 5

在我看来,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,但语法上确实没有太大区别。

  • 而且,纯 JSON 中不允许添加注释。我认为这是配置文件的一个缺点,它可能包含您可能需要也可能不需要的想法或选项。 (8认同)
  • 太糟糕了,你的例子不是正确的 json,它是 javascript。相似,但不一样。 (3认同)