2010-12-28 27 views
7

Tôi đã chỉ ra rằng có mẫu DTO này. Tôi tự hỏi nếu chúng hữu ích.Đối tượng chuyển dữ liệu trong PHP, rất nhiều lớp có cùng tên theo ngữ cảnh

Ý tôi là, tôi có nên ánh xạ tất cả các đối tượng tên miền của mình tới các đối tượng DTO tương ứng của chúng và gán chúng để xem thay cho chính đối tượng miền không? Tôi sẽ, sau đó, có rất nhiều lớp học với cùng một tên theo ngữ cảnh.

Giống như:

  • tài khoản (Domain Object),
  • UserDTO,
  • UserMapper hoặc UserPersistenceFactory,
  • UserFactory,
  • UserSelectionFactory,
  • UserUpdateFactory,
  • UserAssembler (để ánh xạ DTO),
  • UserCollection,
  • UserViewHelper (có thể)

vv ...

Trả lời

3

Thông thường một DTO có thể giúp bạn tách các mối quan tâm dữ liệu của cơ sở dữ liệu từ những mối quan tâm dữ liệu của đối tượng mà tận dụng các dữ liệu. Bạn có thể đặt xác thực trong DTO để đảm bảo rằng một thành viên cụ thể tuân theo định dạng cụ thể. Bằng cách này, mã bổ sung đó không làm lộn xộn các đối tượng không quan tâm đến những gì cơ sở dữ liệu cần.

Ngoài ra, DTO trở nên mạnh mẽ khi nói chuyện với cơ sở dữ liệu gián tiếp. Tuy nhiên, điều này quan trọng hơn nhiều trong các ngôn ngữ có thể tự động tạo DTO.

Trong đó là khía cạnh mạnh mẽ và hấp dẫn nhất của DTO. Rằng nó có thể được tự động tạo ra một cách dễ dàng. Điều này cũng đúng trong PHP, tuy nhiên nó đòi hỏi các công cụ bổ sung.

Tôi thấy lý do tại sao bạn có thể muốn sử dụng chúng trong PHP, tuy nhiên, tôi phải thừa nhận tôi chưa thấy lý do để tự mình làm như vậy. Điển hình là một đối tượng nhà máy + là đủ cho hầu hết các ứng dụng.

HOWEVER

Trong ứng dụng có đối tượng không phản chiếu trực tiếp cơ sở dữ liệu, DTO sẽ được trao quyền lại. Ví dụ: một ứng dụng có những người bao gồm nhiều thông tin meta như Địa chỉ và Thông tin cá nhân và Thẻ tín dụng, có thể sử dụng DTO cho tất cả dữ liệu riêng lẻ, sau đó sử dụng đối tượng Person để xử lý tất cả việc sử dụng dữ liệu đó. Bằng cách này, một giao dịch có thể được chuyển trực tiếp qua thẻ tín dụng DTO, không gây ồn ào và không phiền phức. Sau đó, nó có thể truy cập bất kỳ dữ liệu nào cần thiết từ thẻ. Tuy nhiên, ngay sau khi bạn muốn đặt Địa chỉ trên Thẻ tín dụng DTO đó, bạn không còn có DTO nghiêm ngặt nữa.

Các vấn đề liên quan