Tôi hiện đang tái cấu trúc thư viện PHP dựa trên khung công tác Zend của mình từ việc sử dụng một trình định vị dịch vụ tới (dependator) dependency injection (DI). Tôi cảm thấy rằng nó cải thiện mã của tôi rất nhiều, nhưng tôi không chắc chắn nếu tôi nên tiêm tất cả các phụ thuộc. Một định vị dịch vụ có vẻ dễ dàng hơn cho các phụ thuộc được sử dụng rất nhiều và không xác định. Tôi có các phụ thuộc sau mà tôi vẫn truy cập bằng cách sử dụng công cụ định vị dịch vụ:Tiêm phụ thuộc: tôi có nên tiêm mọi thứ hoặc sử dụng bộ định vị dịch vụ cho một số đối tượng không?
- Đối tượng Zend_Translate (Tôi cần dịch thư ở khắp mọi nơi).
- đối tượng A Zend_Locale (lưu trữ các ngôn ngữ hiện tại)
- Một Zend_Config đối tượng (rất nhiều thứ được cấu hình bởi ini-file)
- Instances của các tầng lớp tiện ích (đối với mảng và thao tác chuỗi)
Nếu tôi tiêm các phụ thuộc này, chúng sẽ làm lộn xộn các nhà xây dựng của tôi và làm sao lãng các phụ thuộc cụ thể. Để thử nghiệm, tôi chỉ có thể thiết lập các phụ thuộc này trong trình định vị dịch vụ của tôi trước khi chạy thử nghiệm. Người thực dụng trong tôi nói rằng tôi đang làm tốt, nhưng người theo chủ nghĩa thuần túy nói rằng tôi nên đi tất cả con đường với DI.
Bạn có đề xuất DI cho các loại đối tượng này hay không?
không thể trả lời được. Bạn dường như biết rằng có ưu và khuyết điểm. Đó là vào bạn để đưa ra quyết định có ý thức. – Gordon
Vâng, câu hỏi đặt ra là: bạn có muốn giới thiệu DI cho điều đó hay không, do đó, câu hỏi là rõ ràng theo nghĩa đó. – markus
Có rất ít câu hỏi tôi upvote VÀ bỏ phiếu để đóng. Đó là một câu hỏi tuyệt vời, nhưng có vẻ như tùy thuộc vào bạn để quyết định. Đó là ứng dụng của bạn, và bạn biết những ưu và khuyết điểm của chủ đề. –