PHP中的数据传输对象,许多具有相同上下文名称的类

PPP*_*PHP 7 php object transfer

我刚才发现有这种DTO模式.我想知道它们是否有用.

我的意思是,我应该将所有域对象映射到相应的DTO对象并将它们分配给查看域对象本身吗?那么,我会有很多具有相同上下文名称的类.

喜欢:

  • 用户(域对象),
  • UserDTO,
  • UserMapper或UserPersistenceFactory,
  • UserFactory,
  • UserSelectionFactory,
  • UserUpdateFactory,
  • UserAssembler(用于DTO映射),
  • UserCollection,
  • UserViewHelper(也许)

等等...

Dam*_*S8N 3

通常,DTO 可以帮助您将数据库的数据关注点与使用该数据的对象的数据关注点分开。您可以在 DTO 中进行验证,以确保特定成员遵循特定格式。这样,额外的代码就不会弄乱那些不关心数据库需要什么的对象。

此外,当间接与数据库对话时,DTO 会变得非常强大。然而,这对于可以自动生成 DTO 的语言来说更为重要。

这就是 DTO 最强大、最引人注目的方面。它可以轻松自动生成。在 PHP 中也是如此,但它需要额外的工具。

我明白为什么您可能想在 PHP 中使用它们,但是,我必须承认我自己还没有找到这样做的理由。通常,工厂 + 对象对于大多数应用程序来说就足够了。

然而

在具有不直接镜像数据库的对象的应用程序中,DTO 再次被授权。例如:具有由大量元信息(如地址、个人信息和信用卡)组成的 People 的应用程序可以对所有个人数据使用 DTO,然后使用 Person 对象来处理该数据的所有使用。这样,交易就可以直接通过信用卡 DTO,没有任何麻烦。然后它可以从卡中访问所需的任何数据。但是,一旦您想在信用卡 DTO 上添加地址,您就不再拥有严格的 DTO。