मैं सोच रहा था, एक एक्स्टेंसिबल ईएवी मॉडल को लागू करने का सही तरीका क्या है।
मैं देखता हूं कि Magento\Catalog\Model\Product
, विधि getExtensionAttributes()
इस तरह से लागू की गई है:
public function getExtensionAttributes()
{
$extensionAttributes = $this->_getExtensionAttributes();
if (!$extensionAttributes) {
return $this->extensionAttributesFactory->create('Magento\Catalog\Api\Data\ProductInterface');
}
return $extensionAttributes;
}
लेकिन दूसरों में, ग्राहक या श्रेणी के मॉडल की तरह
public function getExtensionAttributes()
{
return $this->_getExtensionAttributes();
}
जो एक को जन्म दे सकता शून्य है, परिणाम extension_attributes कुंजी से पहले सेट नहीं किया गया।
व्यावहारिक रूप से, मैं पहले वाले को पसंद करूंगा। इस तरह मैं हमेशा एक उदाहरण प्राप्त करना सुनिश्चित कर सकता हूं Magento\Framework\Api\ExtensionAttributesInterface
, भले ही मॉडल को केवल तत्काल किया गया हो।
लेकिन फिर अन्य मॉड्यूल में इसका उपयोग क्यों नहीं किया जाता है? क्या यह डेटा मॉडल के नए पृथक्करण के खिलाफ है जो हम ग्राहक मॉड्यूल में देखते हैं? यदि हां, तो हमें एक्सटेंशन विशेषताओं को कैसे आरंभ करना चाहिए?