Ich habe mich gefragt, wie man ein erweiterbares EAV-Modell richtig implementiert.
Ich sehe, dass in Magento\Catalog\Model\Product
, die Methode getExtensionAttributes()
wie folgt implementiert ist:
public function getExtensionAttributes()
{
$extensionAttributes = $this->_getExtensionAttributes();
if (!$extensionAttributes) {
return $this->extensionAttributesFactory->create('Magento\Catalog\Api\Data\ProductInterface');
}
return $extensionAttributes;
}
Aber in anderen, wie den Kunden- oder Kategoriemodellen, ist es einfach
public function getExtensionAttributes()
{
return $this->_getExtensionAttributes();
}
Dies kann zu einem NULL- Ergebnis führen, wenn der Schlüssel extension_attributes noch nicht festgelegt wurde.
Pragmatisch würde ich den ersten vorziehen. Auf diese Weise kann ich immer sicher sein, eine Instanz von zu erhalten Magento\Framework\Api\ExtensionAttributesInterface
, selbst wenn das Modell gerade instanziiert wurde.
Aber warum wird es dann nicht in anderen Modulen verwendet? Ist es gegen die neue Trennung von Datenmodellen, die wir im Kundenmodul sehen? Wenn ja, wie sollen wir die Erweiterungsattribute initialisieren?