活动记录:为什么它会添加“保存”之类的东西?

时间:2013-08-28 02:02:22

标签: oop design-patterns activerecord datamapper solid-principles

为什么Product对象有一个名为Save?

的方法

在我看来,产品在数据库中保存是错误的。 一个产品不仅应该只知道自己的责任吗? 我不明白AR的目的或问题不在我的解释中吗?

$product = new Product();
$product->name = 'sample post';
$product->price = 10;
$product->save();

1 个答案:

答案 0 :(得分:2)

Active Record的一般原则是对象的实例是数据存储中的单行,并且该对象完全负责本身的持久性。

该对象只有一个责任,管理自身的持久性

Martin Fowler says it best

  

在数据库表或视图中包装行的对象,封装数据库访问,并在该数据上添加域逻辑。

     

对象包含数据和行为。大部分数据都是持久性的,需要存储在数据库中。 Active Record使用最明显的方法,将数据访问逻辑放在域对象中。这样,所有人都知道如何在数据库中读取和写入数据。