我使用Doctrine 2作为Symfony框架中的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表达式?
发布于 2012-09-21 17:57:22
这基本上取决于你的喜好。
这是我对事物的看法:
注释的优点:
一样
yaml/xml的优点
如果你改变了数据库或域,你仍然需要以任何一种形式维护它们,所以从这个角度来看,在任何方向上都没有真正的优势。
从性能的角度来看,在生产中,您应该使用doctrine的缓存来缓存映射,因此它们在这里也是相同的。
关于这一点:“我将不得不写很多代码,setter和getter,映射信息”:
规则需要私有/受保护的属性,因此您仍然需要编写getter和setter。你仍然会写映射信息,只是在另一个地方。
就我个人而言,我倾向于使用注释,因为如果您需要的话,查找示例和信息要容易得多。
发布于 2013-07-11 21:44:42
使用注释有一个缺点。因为它们是在注释上定义的(这很奇怪),你将不能使用预编译器(如Zend Guard)或一些字节码php缓存扩展来增强代码性能(剥离其中的一些)。因为注释是唯一具有这种技术缺陷的规范,所以我不建议使用它。
另外,在注释上写“函数式”的东西是很奇怪的。
XML比YAML冗长得多,但也更广为人知。在所有选项中,XML的文档示例是最差的。
YAML比其他任何一种语言都更具可读性,但它也依赖于空格标识(有些人不喜欢)。Symfony默认使用YAML进行配置,所以很多使用Symfony的人都选择使用YAML进行原理映射--这意味着YAML示例有很好的文档记录,而且有很多资源。
我个人更喜欢YAML。我可以使用主义模式工具自动生成实体(这意味着我不必编写getters/setters)。我还可以使用预编译器/字节码缓存选项,而不用担心我的注释会被剥离。
其他信息:
如果你使用的是PHP7.0或更高版本,如果你使用的是注解,你就不能在php.ini上设置opcache.save_comments = 0。PHP有一种本机的方法来剥离注释,这会破坏您的应用程序。Guilherme Blanco,Doctrine最活跃的维护者之一,他开发了大多数项目(Doctrine,Symfony) has spoken out AGAINST comment annotations使用的注释检索类(如果你阅读整个帖子,你会发现他对此非常热情)。也有一些extensive discussion on the issues with comment annotations on Reddit,大多数人似乎都同意这是一个坏主意。
尽管如此,Symfony的官方最佳实践书籍建议人们使用注释。因此,大多数Symfony bundle可能会使用注释作为它们的元数据格式。
发布于 2012-09-21 17:51:43
我想这是个人喜好的问题,我更喜欢注释。
我使用注解是因为如果你想知道某个字段的任何信息,就必须打开一个新文件,然后搜索你需要的规则。
解决这一问题的最好方法是创建这两种情况。然后你看起来像你喜欢的那样。
https://stackoverflow.com/questions/12528108
复制相似问题