代码之家  ›  专栏  ›  技术社区  ›  Robin Rodricks

在PHP中使用docine的优势?

  •  9
  • Robin Rodricks  · 技术社区  · 14 年前

    刚刚遇到 Doctrine

    总的来说,建立一个基于条令的应用程序是否使维护和理解变得更容易?它是不是被过度设计了,在一个抽象层上构建对于中小型项目来说是否合理?(<50个GUI屏幕),而不是直接使用MySQL。

    3 回复  |  直到 14 年前
        1
  •  15
  •   Crozin    14 年前

    Doctrine提供了哪些其他PHP抽象层没有提供的功能?

    1. 实现DataMapper模式,而不是ActiveRecord。
    2. 支架 annotations
    3. 使用 DQL
    4. 速度快,社区大。

    查询语言真的是你想要在其中开发整个web应用程序的东西吗?

    仅负责维护业务对象的应用程序的一部分应该意识到原则的存在。这一部分不必100%基于教义。

    总的来说,建立一个基于条令的应用程序是否使维护和理解变得更容易?

    一定地。代码更易于阅读、理解和维护。

    是不是过度设计,对中小型项目是否合理?

    实际上,教义的基本原理很简单。对于小型、中型甚至一些大型应用来说,这是一个非常好的选择。


    教义不是一切的答案,有时也有点问题。但是对于典型的任务来说,它是非常有用的。我是目前最适合PHP的ORM/ODM。

        2
  •  2
  •   GerKirill    11 年前

    我想对克罗辛的回答补充几点,但不幸的是,我不能发表评论。它们在这里:

    • 条令将您从真正的表字段名中完全抽象出来。将实体属性映射到数据库字段后,可以在任何地方使用属性名称。表名相同。
    • 条令采用“代码优先”的方法,因此您可以先创建实体,然后自动为它们生成数据库。相反的情况也是可能的。
    • 条令使用外键和约束来执行级联操作并保持数据一致。
    • Doctrine的工作单元是一个非常棒和聪明的东西,在其他的php表单中没有类似的东西

        3
  •  0
  •   Serge Goldstein    7 年前

    我想在格基里尔的回答中再加一点。缺少对magic getter/setter方法的支持是一个弱点,IMHO,而不是优势。如果您曾经滚动过几十页相同的getter/setter,您将意识到这些方法是一个巨大的空间浪费(更不用说编译时间了)。没有人会意外地设置对象变量,setter也不会阻止您这样做。。。当您想更改属性时,只需调用setter(setter是如何“保护”属性的——如果您要进行一次打印并直接设置错误的属性值,您将进行相同的打印并调用错误的setter)。对于setter或getter来说,除了获取或设置属性之外,很少执行其他操作。如果必须执行特殊操作才能设置或获取属性,则该属性应为方法(请参见 http://www.yegor256.com/2014/09/16/getters-and-setters-are-evil.html ),或者应该重构代码,或者应该调用属性验证函数(通常在创建对象时)。这是困扰OO世界的未经挑战的真理之一。在你发布标准收到的智慧回复之前考虑一下。