【问题标题】:Is CodeIgniter's Active Record class just a database abstraction layer?CodeIgniter 的 Active Record 类只是一个数据库抽象层吗?
【发布时间】:2011-04-12 23:56:16
【问题描述】:

CodeIgniter 的活动记录类似乎只是一个 DAL。它如何被认定为活动记录模式?

【问题讨论】:

    标签: php codeigniter activerecord


    【解决方案1】:

    与我交谈过的很多人,甚至 codeigniter 论坛都指出,他们承认这实际上并不是我们大多数人习惯的传统 Active Record 模式,例如在 Ruby on Rails 中。另一方面,还有其他人表示 Active Record 模式有多种不同的表达方式,因为它在技术上创建具有对应于数据库表的字段的对象。

    但它确实缺乏实际的保存和删除。但我也认为,如果您对数据库对象进行一点创意并将其传递给可以表示我们所知道的实际活动记录的类,那么它也可以很容易地具有活动记录的功能。我认为它为轻松实现外观和行为非常传统的活动记录奠定了相当坚实的基础。

    aaand,对于我所知道的 Active Record 有用性的其他基本部分,对于应该表示某个表中的对象的模型......

    创建: $db->insert($this);

    阅读: $db->get($this->table_name,$this->id); ... 或类似的东西。

    保存: $db->update($this);

    删除: $db->delete($this->id);

    当然,它缺少 CakePHP 等特性的很多自动化,但同时它至少为一个基本的活动记录类奠定了坚实的基础,你可能想要使用一个工厂将 $db 传递给对象,这样当您调用“保存”时,它不会添加一堆非必要信息......但是......我要在这里停下来,因为我想我正在接受事情有点太远了:)。

    我只是希望它在您加入不同的表时具有更好的功能。

    总而言之,Codeigniter 似乎真的只是 60% 的传统活动记录,而它主要只是在基本 sql 语句之上的抽象。

    【讨论】:

      【解决方案2】:

      ActiveRecord 模式是一种数据访问层实现,就像 Data Mapper 一样。数据访问层可以有多种写法。

      Data Mapper Pattern

      Active Record Pattern

      Data Access Layer

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-02-18
        • 1970-01-01
        • 1970-01-01
        • 2013-08-06
        • 1970-01-01
        • 2011-09-15
        • 2013-02-22
        • 1970-01-01
        相关资源
        最近更新 更多