Magento 2'deki modüller arasında çalışmanın tercih edilen yolunun servis sözleşmelerini kullanmak olduğunu biliyorum.
Yani bir ürün yüklemek istersem, ürün deposunu kullanırım:
$product = $productRepository->getById($id);
bir örneği iade sözleşmesi gereğidir Magento\Catalog\Api\Data\ProductInterface
.
Ancak bunun yerine eski adımı kullanabilirim, etki alanı katmanını doğrudan çağırmak:
$product = $productFactory->create()->load($id);
Bunun gerekli veya yararlı olacağı bir durum var mı?
Devdocs şöyle diyor (vurgu eklendi):
Bir modül doğrudan başka bir modüle çağrı yapabilir. Bu sıkıca bağlı çözüm çoğu durumda önerilmez, ancak bazen kaçınılmazdır .
[...]
Başka bir modülün etki alanı katmanı kodunu arama stratejiniz, sisteminizin benzersiz yapılandırmasına ve gereksinimlerine büyük ölçüde bağlıdır.
Kaynak: http://devdocs.magento.com/guides/v2.0/architecture/archi_perspectives/domain_layer.html
Ve ilgili bir soru üzerine bir yorum belirtti:
Havuzun kullanılması size aptal bir DTO'ya dönüştürülmüş bir Ürün modeli olan bir Ürün veri modeli (
Api/Data/Product
) verecektir . Dikkate alınacak bir şey, oldukça farklı olduklarından
Ancak normal koşullarda nesnelerin aynı olduğunu görebildiğim kadarıyla, sadece phpDoc başına dönüş türleri farklıdır ( Magento\Catalog\Api\Data\ProductInterface
/ Magento\Catalog\Model\Product
)