Merak ediyorum, genişletilebilir bir EAV modelini uygulamanın doğru yolu nedir?
Görüyorum ki Magento\Catalog\Model\Product
, yöntem getExtensionAttributes()
şu şekilde uygulanır:
public function getExtensionAttributes()
{
$extensionAttributes = $this->_getExtensionAttributes();
if (!$extensionAttributes) {
return $this->extensionAttributesFactory->create('Magento\Catalog\Api\Data\ProductInterface');
}
return $extensionAttributes;
}
Ancak diğerlerinde, müşteri veya kategori modelleri gibi
public function getExtensionAttributes()
{
return $this->_getExtensionAttributes();
}
extension_attributes anahtarı daha önce ayarlanmamışsa NULL sonucuna yol açabilir .
Pragmatik olarak, ilkini tercih ederim. Bu şekilde Magento\Framework\Api\ExtensionAttributesInterface
, model yeni başlatılmış olsa bile , her zaman bir örnek alacağımdan emin olabilirim .
Peki neden diğer modüllerde kullanılmıyor? Müşteri modülünde gördüğümüz yeni veri modellerinin ayrılmasına karşı mı? Öyleyse, uzantı niteliklerini nasıl başlatmamız gerekir?