0

たとえば、Product オブジェクトに Save というメソッドがあるのはなぜですか?

製品が自分自身をデータベースに保存するのは間違っているように思えます。製品は、自分の責任についてだけ知っているべきではありませんか? AR の目的を理解していませんでしたか、それとも私の解釈に問題があるのでしょうか?

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

1 に答える 1

2

Active Record の一般的な原則は、オブジェクトのインスタンスはデータ ストア内の1 つの行であり、オブジェクトはそれ自体の永続性に対して完全に責任があるということです。

オブジェクトには単一の責任があり、それはそれ自体の永続性を管理することです。

マーティン・ファウラーは次のように言っています

データベース テーブルまたはビューで行をラップし、データベース アクセスをカプセル化し、そのデータにドメイン ロジックを追加するオブジェクト。

オブジェクトは、データと動作の両方を運びます。このデータの多くは永続的であり、データベースに保存する必要があります。Active Record は、ドメイン オブジェクトにデータ アクセス ロジックを配置する最も明白なアプローチを使用します。このようにして、すべての人がデータベースとの間でデータを読み書きする方法を知っています。

于 2013-09-03T13:45:55.030 に答える