Newer
Older
TillQliro / Model / Product / ProductPool.php
@Jonas Jonsson Jonas Jonsson on 2 Apr 2024 1 KB Initial
<?php
/**
 * Copyright © Qliro AB. All rights reserved.
 * See LICENSE.txt for license details.
 */

namespace Qliro\QliroOne\Model\Product;

use Magento\Catalog\Api\ProductRepositoryInterface;

/**
 * Product pool class for faster access to quote item products
 */
class ProductPool
{
    /**
     * @var \Magento\Catalog\Api\ProductRepositoryInterface
     */
    private $productRepository;

    /**
     * @var \Magento\Catalog\Model\Product[]
     */
    private $products = [];

    /**
     * Inject dependencies
     *
     * @param \Magento\Catalog\Api\ProductRepositoryInterface $productRepository
     */
    public function __construct(
        ProductRepositoryInterface $productRepository
    ) {
        $this->productRepository = $productRepository;
    }

    /**
     * Get a product by SKU
     *
     * @param string $sku
     * @param int|null $storeId
     * @return \Magento\Catalog\Model\Product
     * @throws \Magento\Framework\Exception\NoSuchEntityException
     */
    public function getProduct($sku, $storeId = null)
    {
        if (!isset($this->products[$sku])) {
            $this->products[$sku] = $this->productRepository->get($sku, false, $storeId);
        }

        return $this->products[$sku];
    }
}