【问题标题】:ORM and Active Record Pattern in PHP?PHP 中的 ORM 和 Active Record 模式?
【发布时间】:2010-11-09 23:12:39
【问题描述】:

现在有两件事似乎很流行,我想知道使用这样的东西有什么优缺点:http://codeigniter.com/user_guide/database/active_record.html

另一件事是 ORM(例如 Doctrine)。使用这些有什么好处?

【问题讨论】:

    标签: php design-patterns activerecord orm


    【解决方案1】:

    ActiveRecord 是 ORM 中常见的一种模式。 Doctrine 是一个使用 ActiveRecord 风格的 ORM。

    使用 Doctrine 等工具的一些好处:

    • 数据库独立性:代码应该易于移植到不同的数据库。例如,我经常使用 SQLite 进行测试,并在生产环境中使用 MySQL 或 Postgre,而无需更改代码。
    • 它们减少了您必须编写的代码量:很大一部分应用程序代码处理与数据库的通信。 ORM 负责大部分工作,因此您可以专注于编写实际应用。

    当然,它们并非没有缺点:

    • Doctrine 很重,所以比直接使用 SQL 慢
    • ORM 可能很复杂,增加了您必须学习的内容的重量,而且对于没有经验的程序员来说,它们有时可能难以理解

    【讨论】:

    • 我不知道您所说的“ActiveRecord'ish”是什么意思,但这里有一个正确的描述:“Doctrine 2 是 PHP 5.4+ 的对象关系映射器 (ORM),提供透明的持久性用于 PHP 对象。它在核心使用数据映射器模式,旨在将您的域/业务逻辑与关系数据库管理系统中的持久性完全分离。来源:doctrine-orm.readthedocs.org/en/latest/tutorials/…
    • @ZeeCoder 我可能弄错了,但考虑到我在 2009 年写了这个答案,我认为他们还没有 Doctrine 2。 Doctrine 1 的 API 比他们的第二个(我应该添加的更好)版本有更多的 ActiveRecord 风格的 API
    • 那我很糟糕。我只用过 Doctrine 2 :)
    【解决方案2】:

    您可以看看这些问题,尽管它们并不完全是 PHP 特定的:

    【讨论】:

      【解决方案3】:

      我试图保持它的轻量级和易于理解。甚至带有它自己的基于 Mootools 的类生成器 :)

      http://www.schizofreend.nl/Pork.dbObject/

      检查一下:)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-03
        • 2011-02-17
        • 2016-11-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多