Tôi hiểu rằng cách ưa thích để làm việc giữa các mô-đun trong Magento 2 là sử dụng hợp đồng dịch vụ.
Vì vậy, nếu tôi muốn tải một sản phẩm, tôi sử dụng kho sản phẩm:
$product = $productRepository->getById($id);
đó là bằng hợp đồng trả lại một ví dụ của Magento\Catalog\Api\Data\ProductInterface
.
Nhưng tôi cũng có thể sử dụng cách cũ thay vào đó, gọi trực tiếp lớp miền:
$product = $productFactory->create()->load($id);
Có trường hợp nào điều này là cần thiết hoặc hữu ích?
Các devdocs nói (tô sáng thêm):
Một mô-đun có thể gọi trực tiếp vào một mô-đun khác. Giải pháp kết hợp chặt chẽ này không được khuyến nghị cho hầu hết các tình huống, nhưng đôi khi không thể tránh khỏi .
[...]
Chiến lược của bạn để gọi mã lớp miền của mô-đun khác phụ thuộc nhiều vào cấu hình và nhu cầu duy nhất của hệ thống của bạn.
Nguồn: http://devdocs.magento.com/guides/v2.0/arch architecture / archi_perspectives / domain_layer.html
Và một nhận xét về một câu hỏi liên quan đã nêu:
sử dụng Kho lưu trữ sẽ cung cấp cho bạn một mô hình dữ liệu Sản phẩm (
Api/Data/Product
), đó là mô hình Sản phẩm được chuyển đổi thành DTO bị câm. Một cái gì đó để xem xét, vì chúng khá khác nhau
Nhưng theo như tôi có thể thấy các đối tượng đều giống nhau trong điều kiện bình thường, chỉ có các kiểu trả về trên mỗi phpDoc khác nhau ( Magento\Catalog\Api\Data\ProductInterface
/ Magento\Catalog\Model\Product
)