0

私のドメイン モデルは、遅延読み込みの場合を除いて、それがどのように永続化されるかについて何も知りません。

プロパティを遅延ロードするには、少なくともファクトリの知識が必要です (このファクトリにはマッパーの知識があります)。実際に実行可能な代替手段は考えられません。ドメイン オブジェクトを監視可能にして、サービスに読み込みを行わせることもできるかもしれませんが、それはたいへんな労力であり、利益はほとんど得られません。

私は何が欠けていますか?

4

2 に答える 2

0

わかりましたので、遅延読み込みプロパティが多値の場合 (99.9% のケース) のエレガントな解決策を見つけました。Daspirid の Web サイトhttp://site.svn.dasprids.de/trunk/application/にあります。(App_Model_Relation クラスを参照してください)。

基本的に、マッパーが構成オブジェクト (つまり、「1 対多」関係の「1」) を作成するとき、iteratorAggregateインターフェースを実装するクラスを複数値フィールドに取り込みます。このオブジェクトの内側の反復子はコレクションですが、コレクションは必要な場合 (つまり__call()、外側の反復子で呼び出された場合) にのみインスタンス化されます。

もう 1 つの有効な方法は、Matt Zandstra が著書「PHP Objects, Patterns, and Practice」(Apress) で説明しているように、「遅延コレクション」を使用することです。この場合、コレクションは、呼び出されたときに基になるデータを取得できるようにする PDO ステートメントで準備されます。

これで、私のモデルは永続性の詳細から完全に解放されます。ええええ!

于 2013-06-03T07:08:49.940 に答える