vendor/shopware/platform/src/Core/Checkout/Cart/CachedRuleLoader.php line 48

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Shopware\Core\Checkout\Cart;
  3. use Psr\Log\LoggerInterface;
  4. use Shopware\Core\Content\Rule\RuleCollection;
  5. use Shopware\Core\Framework\Context;
  6. use Symfony\Component\Cache\Adapter\TagAwareAdapterInterface;
  7. class CachedRuleLoader extends AbstractRuleLoader
  8. {
  9.     public const CACHE_KEY 'cart_rules';
  10.     private AbstractRuleLoader $decorated;
  11.     private TagAwareAdapterInterface $cache;
  12.     private LoggerInterface $logger;
  13.     public function __construct(AbstractRuleLoader $decoratedTagAwareAdapterInterface $cacheLoggerInterface $logger)
  14.     {
  15.         $this->decorated $decorated;
  16.         $this->cache $cache;
  17.         $this->logger $logger;
  18.     }
  19.     public function getDecorated(): AbstractRuleLoader
  20.     {
  21.         return $this->decorated;
  22.     }
  23.     public function load(Context $context): RuleCollection
  24.     {
  25.         $item $this->cache->getItem(self::CACHE_KEY);
  26.         try {
  27.             if ($item->isHit() && $item->get()) {
  28.                 $this->logger->info('cache-hit: ' self::CACHE_KEY);
  29.                 return $item->get();
  30.             }
  31.         } catch (\Throwable $e) {
  32.             $this->logger->error($e->getMessage());
  33.         }
  34.         $this->logger->info('cache-miss: ' self::CACHE_KEY);
  35.         $rules $this->getDecorated()->load($context);
  36.         $item->set($rules);
  37.         $this->cache->save($item);
  38.         return $rules;
  39.     }
  40. }