CodeIgniter的Active Record类只是一个数据库抽象层吗?

时间:2011-04-12 23:56:17

标签: php codeigniter activerecord

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

2 个答案:

答案 0 :(得分:3)

我与之交谈的很多人甚至是codeigniter论坛都指出这样一个事实:他们接受它实际上并不是我们大多数人习惯使用的传统Active记录模式,比如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传递给对象,这样当你调用“save”时它不会添加一堆非必要的信息......但是......我要停在这里因为我认为我正在服用事情有点太过分了:)。

我希望当你加入不同的表时,它有更好的功能。

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

答案 1 :(得分:0)

ActiveRecord模式是数据访问层实现,就像Data Mapper一样。数据访问层可以用很多方式编写。

Data Mapper Pattern

Active Record Pattern

Data Access Layer