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

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. class CachedLanguageLoader implements LanguageLoaderInterfaceEventSubscriberInterface
  6. {
  7.     private const CACHE_KEY 'shopware.languages';
  8.     private CacheInterface $cache;
  9.     private LanguageLoaderInterface $loader;
  10.     public function __construct(LanguageLoaderInterface $loaderCacheInterface $cache)
  11.     {
  12.         $this->cache $cache;
  13.         $this->loader $loader;
  14.     }
  15.     public static function getSubscribedEvents(): array
  16.     {
  17.         return [
  18.             LanguageEvents::LANGUAGE_DELETED_EVENT => 'invalidateCache',
  19.             LanguageEvents::LANGUAGE_WRITTEN_EVENT => 'invalidateCache',
  20.         ];
  21.     }
  22.     public function loadLanguages(): array
  23.     {
  24.         return $this->cache->get(self::CACHE_KEY, function () {
  25.             return $this->loader->loadLanguages();
  26.         });
  27.     }
  28.     public function invalidateCache(): void
  29.     {
  30.         $this->cache->delete(self::CACHE_KEY);
  31.     }
  32. }