मैं समझता हूं कि Magento 2 में मॉड्यूल के बीच काम करने का पसंदीदा तरीका सेवा अनुबंध का उपयोग कर रहा है।
इसलिए यदि मैं किसी उत्पाद को लोड करना चाहता हूं, तो मैं उत्पाद भंडार का उपयोग करता हूं:
$product = $productRepository->getById($id);
जो अनुबंध के एक उदाहरण से लौट रहा है Magento\Catalog\Api\Data\ProductInterface
।
लेकिन मैं इसके बजाय पुराने तरीके का उपयोग कर सकता हूं, डोमेन लेयर को सीधे कॉल कर रहा हूं:
$product = $productFactory->create()->load($id);
क्या कोई ऐसा मामला है जहां यह आवश्यक या उपयोगी होगा?
देवदूत कहते हैं (प्रकाश डाला गया):
एक मॉड्यूल दूसरे मॉड्यूल में सीधे कॉल कर सकता है। यह कसकर युग्मित समाधान ज्यादातर स्थितियों के लिए अनुशंसित नहीं है, लेकिन कभी-कभी अपरिहार्य है ।
[...]
किसी अन्य मॉड्यूल के डोमेन-लेयर कोड को कॉल करने की आपकी रणनीति आपके सिस्टम के अनूठे कॉन्फ़िगरेशन और जरूरतों पर अत्यधिक निर्भर है।
स्रोत: http://devdocs.magento.com/guides/v2.0/altecture/archi_perspectives/domain_layer.html
और संबंधित प्रश्न पर एक टिप्पणी में कहा गया है:
रिपोजिटरी का उपयोग करने से आपको एक उत्पाद डेटा मॉडल (
Api/Data/Product
) मिलेगा , जो एक उत्पाद मॉडल को डंबड-डाउन डीटीओ में परिवर्तित किया जाता है। कुछ विचार करने के लिए, क्योंकि वे काफी अलग हैं
लेकिन जहां तक मैं देख सकता हूं कि वस्तुएं सामान्य परिस्थितियों में समान हैं, बस प्रति phpDoc के प्रकार भिन्न हैं ( Magento\Catalog\Api\Data\ProductInterface
/ Magento\Catalog\Model\Product
)