2010-12-28 15 views
7

Bueno, acabo de descubrir que existe este patrón de DTO. Me pregunto si son útiles.Objetos de transferencia de datos en PHP, muchas clases con el mismo nombre contextual

Quiero decir, ¿debería asignar todos mis objetos de dominio a sus objetos DTO correspondientes y asignarlos para ver en su lugar los objetos de dominio? Tendría, entonces, muchas clases con el mismo nombre contextual.

igual:

  • usuario (objeto de dominio),
  • UserDTO,
  • UserMapper o UserPersistenceFactory,
  • UserFactory,
  • UserSelectionFactory,
  • UserUpdateFactory,
  • UserAssembler (para mapeo DTO),
  • UserCollection,
  • UserViewHelper (tal vez)

etc ...

Respuesta

3

Normalmente, un DTO puede ayudar a separar las preocupaciones de datos de la base de datos de las preocupaciones de datos de los objetos que hacen uso de la datos. Puede colocar la validación en el DTO para asegurarse de que un miembro en particular siga un formato específico. De esta forma, ese código adicional no satura los objetos que no les importa lo que necesita la base de datos.

Además, el DTO se vuelve poderoso cuando se habla indirectamente con una base de datos. Sin embargo, esto es de mucha más importancia en los lenguajes que pueden autogenerar DTO.

Ahí está el aspecto más poderoso y convincente de la DTO. Que se puede generar automáticamente fácilmente. Esto también es cierto en PHP, sin embargo, requiere herramientas adicionales.

Veo por qué es posible que desee utilizarlos en PHP, sin embargo, debo admitir que aún no he visto una razón para hacerlo. Por lo general, un Factory + Object es suficiente para la mayoría de las aplicaciones.

Sin embargo

En una aplicación que tiene objetos que no reflejan la base de datos directamente, un DTO se convierte facultado nuevo. Por ejemplo: una aplicación que tiene personas que están compuestas de una gran cantidad de metainformación como direcciones e información personal y tarjetas de crédito, podría usar DTO para todos los datos individuales, y luego usar un objeto Person para manejar todo el uso de esos datos. De esta forma, una Transacción podría pasarse directamente a la Tarjeta de Crédito DTO, sin complicaciones y sin problemas. A continuación, podría acceder a los datos que necesita de la tarjeta. Sin embargo, tan pronto como quiera poner una dirección en esa tarjeta de crédito DTO, ya no tendrá una DTO estricta.

Cuestiones relacionadas