vendor/shopware/core/Checkout/Cart/CachedRuleLoader.php line 34

  1. <?php declare(strict_types=1);
  2. namespace Shopware\Core\Checkout\Cart;
  3. use Shopware\Core\Content\Rule\RuleCollection;
  4. use Shopware\Core\Framework\Context;
  5. use Shopware\Core\Framework\Log\Package;
  6. use Symfony\Contracts\Cache\CacheInterface;
  7. /**
  8.  * @final Depend on the AbstractRuleLoader which is the definition of public API for this scope
  9.  */
  10. #[Package('checkout')]
  11. class CachedRuleLoader extends AbstractRuleLoader
  12. {
  13.     final public const CACHE_KEY 'cart_rules';
  14.     /**
  15.      * @internal
  16.      */
  17.     public function __construct(
  18.         private readonly AbstractRuleLoader $decorated,
  19.         private readonly CacheInterface $cache
  20.     ) {
  21.     }
  22.     public function getDecorated(): AbstractRuleLoader
  23.     {
  24.         return $this->decorated;
  25.     }
  26.     public function load(Context $context): RuleCollection
  27.     {
  28.         return $this->cache->get(self::CACHE_KEY, fn (): RuleCollection => $this->decorated->load($context));
  29.     }
  30. }