*/ private static array $cacheAll = []; private static bool $initialized = false; public function __construct(private ConfigurationRepository $configurationRepository, private CacheInterface $cache) { } /** * @return array */ public function getConfigurations(): array { if (self::$initialized === true) { return self::$cacheAll; } self::$cacheAll = $this->cache->get('configurations', function (ItemInterface $item) { $item->expiresAfter(86400); // one day return $this->configurationRepository->getConfigurations(); }); self::$initialized = true; return self::$cacheAll; } public function getConfiguration(string $name): ?Configuration { return $this->configurationRepository->findOneBy(['name' => $name]); } public function clearCache(): void { $this->cache->delete('configurations'); self::$initialized = false; } public function saveConfiguration(Configuration $configuration): void { $this->configurationRepository->saveConfiguration($configuration); $this->clearCache(); } public function saveSystemConfiguration(SystemConfiguration $model): void { $this->configurationRepository->saveSystemConfiguration($model); $this->clearCache(); } }