<?php declare(strict_types=1);namespace Shopware\Core\System\SystemConfig\Store;use Shopware\Core\Framework\Log\Package;use Shopware\Core\System\SystemConfig\Event\SystemConfigChangedEvent;use Symfony\Component\EventDispatcher\EventSubscriberInterface;use Symfony\Contracts\Service\ResetInterface;/** * @internal */#[Package('system-settings')]final class MemoizedSystemConfigStore implements EventSubscriberInterface, ResetInterface{ /** * @var array[] */ private array $configs = []; public static function getSubscribedEvents(): array { return [ SystemConfigChangedEvent::class => [ ['onValueChanged', 1500], ], ]; } public function onValueChanged(SystemConfigChangedEvent $event): void { $this->removeConfig($event->getSalesChannelId()); } public function setConfig(?string $salesChannelId, array $config): void { $this->configs[$this->getKey($salesChannelId)] = $config; } public function getConfig(?string $salesChannelId): ?array { return $this->configs[$this->getKey($salesChannelId)] ?? null; } public function removeConfig(?string $salesChannelId): void { if ($salesChannelId === null) { $this->reset(); return; } unset($this->configs[$this->getKey($salesChannelId)]); } public function reset(): void { $this->configs = []; } private function getKey(?string $salesChannelId): string { return $salesChannelId ?? '_global_'; }}