vendor/shopware/core/System/SystemConfig/CachedSystemConfigLoader.php line 39

  1. <?php declare(strict_types=1);
  2. namespace Shopware\Core\System\SystemConfig;
  3. use Shopware\Core\Framework\Adapter\Cache\CacheValueCompressor;
  4. use Shopware\Core\Framework\Log\Package;
  5. use Symfony\Contracts\Cache\CacheInterface;
  6. use Symfony\Contracts\Cache\ItemInterface;
  7. #[Package('system-settings')]
  8. class CachedSystemConfigLoader extends AbstractSystemConfigLoader
  9. {
  10.     final public const CACHE_TAG 'system-config';
  11.     /**
  12.      * @internal
  13.      */
  14.     public function __construct(
  15.         private readonly AbstractSystemConfigLoader $decorated,
  16.         private readonly CacheInterface $cache
  17.     ) {
  18.     }
  19.     public function getDecorated(): AbstractSystemConfigLoader
  20.     {
  21.         return $this->decorated;
  22.     }
  23.     public function load(?string $salesChannelId): array
  24.     {
  25.         $key 'system-config-' $salesChannelId;
  26.         $value $this->cache->get($key, function (ItemInterface $item) use ($salesChannelId) {
  27.             $config $this->getDecorated()->load($salesChannelId);
  28.             $item->tag([self::CACHE_TAG]);
  29.             return CacheValueCompressor::compress($config);
  30.         });
  31.         return CacheValueCompressor::uncompress($value);
  32.     }
  33. }