Tôi đã tự hỏi, cách đúng đắn để thực hiện một mô hình EAV mở rộng là gì.
Tôi thấy rằng trong Magento\Catalog\Model\Product, phương thức getExtensionAttributes()được thực hiện như thế này:
public function getExtensionAttributes()
{
$extensionAttributes = $this->_getExtensionAttributes();
if (!$extensionAttributes) {
return $this->extensionAttributesFactory->create('Magento\Catalog\Api\Data\ProductInterface');
}
return $extensionAttributes;
}
Nhưng ở những người khác, như mô hình khách hàng hoặc danh mục, đó chỉ là
public function getExtensionAttributes()
{
return $this->_getExtensionAttributes();
}
điều này có thể dẫn đến kết quả NULL , nếu khóa extension_attribut chưa được đặt trước đó.
Thực tế, tôi thích cái đầu tiên. Bằng cách này, tôi luôn có thể chắc chắn có được một thể hiện Magento\Framework\Api\ExtensionAttributesInterface, ngay cả khi mô hình vừa được khởi tạo.
Nhưng tại sao nó không được sử dụng trong các mô-đun khác? Có phải nó chống lại sự phân tách mới của các mô hình dữ liệu mà chúng ta thấy trong mô-đun khách hàng không? Nếu vậy, chúng ta phải khởi tạo các thuộc tính mở rộng như thế nào?