拡張可能なEAVモデルを実装するための正しい方法は何かと思っていました。
私はその中を見る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キーが以前に設定されていない場合、NULLの結果になる可能性があります。
実用的には、最初の方を好みます。これによりMagento\Framework\Api\ExtensionAttributesInterface
、モデルがインスタンス化されたばかりの場合でも、常にのインスタンスを確実に取得できます。
しかし、なぜそれが他のモジュールで使用されないのですか?カスタマーモジュールに表示されるデータモデルの新しい分離に反対ですか?もしそうなら、拡張属性をどのように初期化するべきですか?