【问题标题】:Symfony2 - Why use XML for settings/config?Symfony2 - 为什么使用 XML 进行设置/配置?
【发布时间】:2012-07-31 14:03:15
【问题描述】:

是否有兴趣为这些类型的文件中的每一种使用 XML 而不是 YAML:

  • 配置
  • 安全
  • 路由
  • 服务
  • 翻译

我想在全球范围内询问 XML 与 YAML 和 JSON,但我会坚持这些主题 :)

【问题讨论】:

  • 这是一个常见的问题,因为我们知道 Symfony 2 将处理许多设置/配置格式:)
  • 我问是因为我想知道为什么人们仍然使用 XML
  • 好问题。我自己也在想这个。 2.0还有一个ini文件(parameters.ini),2.1改名为yml

标签: xml symfony yaml configuration-files


【解决方案1】:

在我的公司项目中,我们使用YAML,因为它更具可读性。最易读。 可读性最强。


编辑

我能想象到使用XML 而不是YAML 的唯一抽象情况 - 可能是针对一些动态文件编写器的,因为使用SimpleXML 或类似的东西更容易操作节点。例如,如果您需要定义一些配置文件,在测试中构建模式等......

但很难想象另一种情况。


另一个编辑:

既然我的回答被接受了,我不能不同意m2mdas - 正如他在answer below 中提到的那样,使用XML 的另一件事是IDE 的自动完成支持。

【讨论】:

  • 我完全同意你的看法。这就是为什么我想知道为什么要使用 XML ?我仍然可以看到最近使用 XML 来描述此类数据的示例...
  • 可能对于一些动态文件编写器来说——使用SimpleXML 或类似的东西更容易操作节点。例如,如果你需要在测试中定义一些配置文件......很难想象另一种情况
【解决方案2】:

xml 配置的优点是 IDE 自动完成和即时验证。作为由具体模式定义定义的元素,IDE 可以立即针对它验证元素,这在 YAML 或 JSON 中是不可能的。另外我认为 Symfony 在处理之前会根据定义验证配置中的 xml 元素。

编辑:

通过验证,我的意思是根据定义的模式验证元素结构。最好在处理之前验证配置。例如,具有数百个服务对象定义的services.yml 在第 99 个服务定义中存在错误。 Yaml 解析器将增量解析,创建昂贵的 cpu 密集型服务对象,并将在第 99 个定义处失败。而对于具有定义架构的service.xml,您可以验证元素结构并在正常时处理它们。显然第二个过程是有效的。

【讨论】:

  • 你能举个例子吗?我想 XML 需要进行大量验证,但是使用 YAML 应该更简单,不是吗? YAML 也需要较少的自动完成,因为只有键/值。
  • 好吧,我明白了,但是我想数百个服务应该很难被 XML 人类阅读......
  • 嗯,每个选择都有一个权衡:)。这就是 IDE 工具很重要的地方。在 java 中,您可以轻松地在服务定义和类之间来回切换。 PHP IDE 目前没有这些功能。
  • @MunMunDas 也许在 2012 年是这样,但现在我们有了 PhpStorm + Symfony 插件,它可以做这样的事情:)
【解决方案3】:

Fabien Potencier 在他的博客上写到使用 XML 优于 YAML 的优势:

  • 加载 XML 文件时,会自动使用内置 services.xsd 文件对其进行验证;

  • XML 可以在 IDE 中自动完成;

  • XML 格式比 YAML 格式快;

  • XML 格式没有外部依赖(YAML 格式依赖于 sfYAML 组件)。

虽然这篇文章是为 symfony1.x 写的,但是积分也绝对可以应用到 Symfony2 上。

http://fabien.potencier.org/article/15/symfony-service-container-using-xml-or-yaml-to-describe-services

【讨论】:

    【解决方案4】:

    支持 XML 的另一件事是可以使用 PHP 常量定义参数,而 YAML 则无法做到这一点。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-30
    • 1970-01-01
    相关资源
    最近更新 更多