gpt4 book ai didi

symfony - 我应该在 Doctrine 2 中使用 YAML/XML 还是注解映射?

转载 作者:行者123 更新时间:2023-12-04 01:16:57 25 4
gpt4 key购买 nike

我在 Symfony 框架中使用 Doctrine 2 作为 ORM。对实体使用基于注释的映射,我将不得不编写大量代码(setter 和 getter、映射信息等)。使用 YAML/XML,我不必只写列定义和元数据。在 Doctrine 文档中,他们主要使用示例中的注释,很少使用 YAML 或 XML。

我应该使用 YAML/XML 还是注释?

对于注释,我可以在 http://docs.doctrine-project.org/en/latest/reference/annotations-reference.html 找到每个注释的文档。 .不过,我在 YAML 或 XML 中找不到注释的等价物;如何将注释转换为等效的 YAML/XML 表达式?

最佳答案

使用注释有一个缺点。由于它们是在注释中定义的(这很奇怪),您将无法使用预编译器(如 Zend Guard)或一些字节码 php 缓存扩展来提高代码性能( 一些 中的一些会删除注释)。因为注释是唯一具有这种技术缺陷的规范,我不建议使用它。

此外,在评论上写“功能性”的东西也很奇怪。

XML 比 YAML 详细得多,但也更广为人知。 XML 的文档示例是所有选项中最差的。

YAML 比其他任何一种都更具可读性,但它也依赖于空间标识(有些人不喜欢)。 Symfony 默认使用 YAML 进行配置,因此许多使用 Symfony 的人选择使用 YAML 进行学说映射——这意味着 YAML 示例有很好的文档记录,并且那里有很多资源。

我个人更喜欢 YAML。我可以使用教义模式工具自动生成实体(这意味着我不必编写 getter/setter)。我还可以使用预编译器/字节码缓存选项,而不必担心我的注释被删除。

附加信息:

如果您使用 PHP 7.0 或更高版本,则无法设置 opcache.save_comments = 0如果您使用注释,请在 php.ini 上。 PHP 有一种去除注释的 native 方式,这会破坏您的应用程序。 Guilherme Blanco,Doctrine 最活跃的维护者之一,他开发了大多数项目(Doctrine,Symfony)使用的注释检索类has spoken out AGAINST comment annotations (如果您阅读整个线程,您会发现他对此非常热情)。也有一些extensive discussion on the issues with comment annotations on Reddit ,大多数人似乎都同意这是一个坏主意。

尽管如此,Symfony 的官方最佳实践书还是建议人们使用注释。因此,大多数 Symfony 包可能会使用注释作为它们的元数据格式。

关于symfony - 我应该在 Doctrine 2 中使用 YAML/XML 还是注解映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12528108/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com