7

PHP でアプリを構築しており、DB アクセスにデータ マッパー パターンを使用しています。Observer パターンを使用して、すべてのマッパーが作成したエンティティを観察できるようにすることを検討していました。これにより、手動で解析しなくても変更をデータベースに自動的に保存できるようになります。

これが良いアイデアなのか、それとも悪い習慣なのかなど疑問に思っていましたか?

私は通常、階層内で一緒にリンクされているいくつかのオブジェクトを操作しています。現時点では、各オブジェクトを手動でマッパーに解析する必要があります。これはかなり面倒なので、より良い解決策を考え出そうとしています。

ありがとう、ジャック

4

2 に答える 2

3

私には間違いなく良いアイデアのように聞こえます。あなたがしていることは、マップされたオブジェクトに加えた変更を追跡し、完了したら (通常は単一のトランザクションとして) コミットすることを目的としたUnit Of Workパターンに似ています。

OutletReposeなどのプロジェクトは、PHP でこれを提供し、マッピングの苦痛を軽減すると信じていますが、個人的には使用していません。

余談ですが、ドメイン駆動設計の道をたどり、それがもたらすクリーンな分離から利益を得たい場合は、オブジェクト階層を集合体と見なすことで利益が得られるようです。

--

編集: また、eZ Componentsにはかなりフル機能の PHP ORMソリューションがあり、Doctrine 2.0もこのように形成されているようです。

--

編集 2:あなたが議論している問題について、私は Propel や Creole を見ません。Creole は ORM ではなく、PDO に似た DB 抽象化レイヤーであり、プロジェクトは正式に「デッド」になりました。Propel は DataMapper パターンではなく ActiveRecord パターンを使用するため、ドメイン オブジェクトはより多くの永続化責任を負うことになり、私の知る限り、Unit Of Work 機能は含まれていません。

于 2009-02-04T07:02:33.893 に答える
0

ORM について調べている場合は、PropelCreoleを調べてください。

于 2009-02-04T21:08:18.770 に答える