2010-12-28 1 views
7

さて、私はちょうどこのDTOパターンがあることを知りました。 が役に立つかなと思います。PHPのデータ転送オブジェクト、同じコンテキスト名のクラスがたくさんあります

つまり、すべてのドメインオブジェクトを対応するDTOオブジェクトにマップして、ドメインオブジェクト自体の代わりに表示する必要がありますか?私は、その後、同じ文脈上の名前を持つクラスがたくさんあります。

評価:

  • ユーザ(ドメインオブジェクト)、
  • UserDTO、
  • UserMapper又はUserPersistenceFactory、
  • UserFactory、
  • UserSelectionFactory、
  • UserUpdateFactory、
  • UserAssembler( DTOマッピングの場合)、
  • UserCollection、(多分)
  • UserViewHelper

等...

答えて

3

通常DTOは、あなたが利用して、オブジェクトのデータへの懸念から、データベースのデータの懸念を分離することができますデータ。特定のメンバーが特定の形式に従っていることを確認するために、DTOに検証を置くことができます。このようにして、その余分なコードは、データベースが必要とするものを気にしないオブジェクトを混乱させることはありません。

さらに、DTOはデータベースと間接的に対話するときに強力になります。しかし、これは、DTOを自動生成できる言語ではるかに重要です。

そこには、DTOの最も強力で説得力のある側面があります。それは簡単に自動生成することができます。これはPHPでも当てはまりますが、追加のツールが必要です。

私はなぜPHPでそれらを使用したいのか分かりますが、私は自分自身でそれを行う理由はまだ分かりません。通常、ほとんどのアプリケーションではFactory + Objectで十分です。

しかし

データベースを直接反映していないオブジェクトを持つアプリケーションでは、DTOは再び権限を与えてしまいます。たとえば、住所や個人情報、クレジットカードなどの多くのメタ情報で構成されるPeopleを持つアプリケーションでは、すべての個々のデータにDTOを使用し、Personオブジェクトを使用してそのデータのすべての使用を処理できます。このようにして、トランザクションはクレジットカードのDTOに直接渡すことができます。カードから必要なデータにアクセスできます。ただし、そのクレジットカードのDTOに住所を記載するとすぐに、厳格なDTOはなくなります。

関連する問題