Saya bertanya-tanya, apa cara yang tepat untuk menerapkan model EAV yang dapat dikembangkan.
Saya melihat bahwa dalam Magento\Catalog\Model\Product
, metode getExtensionAttributes()
diimplementasikan seperti ini:
public function getExtensionAttributes()
{
$extensionAttributes = $this->_getExtensionAttributes();
if (!$extensionAttributes) {
return $this->extensionAttributesFactory->create('Magento\Catalog\Api\Data\ProductInterface');
}
return $extensionAttributes;
}
Tetapi pada orang lain, seperti model pelanggan atau kategori itu saja
public function getExtensionAttributes()
{
return $this->_getExtensionAttributes();
}
yang dapat menyebabkan hasil NULL , jika kunci extension_attributes belum ditetapkan sebelumnya.
Secara pragmatis, saya lebih suka yang pertama. Dengan cara ini saya selalu bisa memastikan untuk mendapatkan contoh Magento\Framework\Api\ExtensionAttributesInterface
, bahkan jika model baru saja dipakai.
Tapi mengapa itu tidak digunakan dalam modul lain? Apakah itu bertentangan dengan pemisahan baru model data yang kita lihat dalam modul pelanggan? Jika demikian, bagaimana kita menginisialisasi atribut ekstensi?