vendor/shopware/core/System/Language/CachedLanguageLoader.php line 51

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Shopware\Core\System\Language;
  3. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  4. use Symfony\Contracts\Cache\CacheInterface;
  5. /**
  6.  * @deprecated tag:v6.5.0 - reason:becomes-internal - EventSubscribers will become internal in v6.5.0
  7.  *
  8.  * @phpstan-import-type LanguageData from LanguageLoaderInterface
  9.  */
  10. class CachedLanguageLoader implements LanguageLoaderInterfaceEventSubscriberInterface
  11. {
  12.     private const CACHE_KEY 'shopware.languages';
  13.     private CacheInterface $cache;
  14.     private LanguageLoaderInterface $loader;
  15.     /**
  16.      * @internal
  17.      */
  18.     public function __construct(LanguageLoaderInterface $loaderCacheInterface $cache)
  19.     {
  20.         $this->cache $cache;
  21.         $this->loader $loader;
  22.     }
  23.     /**
  24.      * @return array<string, string>
  25.      */
  26.     public static function getSubscribedEvents(): array
  27.     {
  28.         return [
  29.             LanguageEvents::LANGUAGE_DELETED_EVENT => 'invalidateCache',
  30.             LanguageEvents::LANGUAGE_WRITTEN_EVENT => 'invalidateCache',
  31.         ];
  32.     }
  33.     /**
  34.      * @return LanguageData
  35.      */
  36.     public function loadLanguages(): array
  37.     {
  38.         return $this->cache->get(self::CACHE_KEY, function () {
  39.             return $this->loader->loadLanguages();
  40.         });
  41.     }
  42.     public function invalidateCache(): void
  43.     {
  44.         $this->cache->delete(self::CACHE_KEY);
  45.     }
  46. }