11

CodeIgniterで新しいWebアプリケーションの開発を開始しようとしています。これまで、オブジェクトマッピングのニーズにDataMapper ORMを使用し、その機能に完全に満足しています。しかし、私の満足は私の知識の範囲内にとどまります。したがって、私はDoctrineへの切り替えを検討しています。

Doctrineのドキュメントを調べました。モデルをかなり広範囲に定義する必要があるようです。ゲッターとセッターを追加し、方向参照を提供し、マッピングを提供します。一見すると、これはDataMapperORMと直接比較すると途方もないオーバーヘッドのように見えます。

両方のORMの経験がある人は、あなたを一方から他方へと駆り立てた理由についてコメントできますか?

DoctrineがDataMapperORMでは達成できない重要な機能は何ですか?

手動モデル定義は一歩後退しますか、それとも前進しますか?パフォーマンスの問題だと思います。

4

1 に答える 1

22

DataMapper ORMとDoctrineは、まったく異なる一連の規則に従います。DataMapper ORMは、(紛らわしいことに)データマッパーではなく、アクティブレコードの実装です。つまり、モデルクラスはORMライブラリと緊密に統合されています。モデルは、組み込みのDataMapperモデルに基づいて構築されています。あなたは無料でたくさんの魔法を手に入れますが、その代わりにあなたはあなたのモデルをDataMapperORMと結婚させます。

一方、Doctrineは真のデータマッパーパターンを使用します。モデルは単純な古いPHPオブジェクトです。外部依存関係はありません。Doctrineは、古いPHPオブジェクトを取得してデータベースに保存し、後で再度取得することができます。そのモデルはORMとはまったく結合されていません。

ゲッター、セッター、リレーショナル整合性などに関するDoctrineのドキュメントで読んだことは、オブジェクト指向開発の優れたプラクティスです。それらはDoctrineの要件ではありませんが、あなたの生活を楽にしてくれます。DataMapperORMモデルにも使用する必要があります。必要に応じて、Doctrineモデルで魔法のゲッターやセッター、または単なる古い公共のプロパティを使用することもできます。Doctrineがあなたがすべきではないと言っているからといって、あなたがそれをすることができないという意味ではありません。Doctrineは、パブリックプロパティでモデルを喜んで使用しますが、いくつかの注意点があります。それで全部です。

于 2011-07-26T06:10:08.557 に答える