6 declare(strict_types=1);
12 use Magento\ConfigurableProduct\Model\ResourceModel\Product\Type\Configurable\Attribute\CollectionFactory;
16 use Magento\Catalog\Model\ProductFactory;
27 private $attributeCollectionFactory;
37 private $metadataPool;
47 private $attributeMap = [];
55 CollectionFactory $attributeCollectionFactory,
59 $this->attributeCollectionFactory = $attributeCollectionFactory;
61 $this->metadataPool = $metadataPool;
71 if (!in_array(
$productId, $this->productIds)) {
98 private function fetch() : array
100 if (empty($this->productIds) || !empty($this->attributeMap)) {
101 return $this->attributeMap;
104 $linkField = $this->metadataPool->getMetadata(ProductInterface::class)->getLinkField();
107 foreach ($this->productIds as
$id) {
109 $product = $this->productFactory->create();
117 if (!isset($this->attributeMap[
$productId])) {
125 =
$attribute->getProductAttribute()->getAttributeCode();
129 return $this->attributeMap;
getAttributesByProductId(int $productId)
__construct(CollectionFactory $attributeCollectionFactory, ProductFactory $productFactory, MetadataPool $metadataPool)
addProductId(int $productId)