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

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