src/Core/System/SystemConfig/CachedSystemConfigLoader.php line 32
<?php declare(strict_types=1);
namespace Shopware\Core\System\SystemConfig;
use Shopware\Core\Framework\Adapter\Cache\CacheValueCompressor;
use Shopware\Core\Framework\Log\Package;
use Symfony\Contracts\Cache\CacheInterface;
use Symfony\Contracts\Cache\ItemInterface;
#[Package('system-settings')]
class CachedSystemConfigLoader extends AbstractSystemConfigLoader
{
final public const CACHE_TAG = 'system-config';
/**
* @internal
*/
public function __construct(private readonly AbstractSystemConfigLoader $decorated, private readonly CacheInterface $cache)
{
}
public function getDecorated(): AbstractSystemConfigLoader
{
return $this->decorated;
}
public function load(?string $salesChannelId): array
{
$key = 'system-config-' . $salesChannelId;
$value = $this->cache->get($key, function (ItemInterface $item) use ($salesChannelId) {
$config = $this->getDecorated()->load($salesChannelId);
$item->tag([self::CACHE_TAG]);
return CacheValueCompressor::compress($config);
});
return CacheValueCompressor::uncompress($value);
}
}