/** * Initializes the cache framework * * @param Bootstrap $bootstrap * @return void */ public static function initializeCacheManagement(Bootstrap $bootstrap) { /** @var ConfigurationManager $configurationManager */ $configurationManager = $bootstrap->getEarlyInstance(ConfigurationManager::class); $environment = $bootstrap->getEarlyInstance(Environment::class); $cacheFactoryObjectConfiguration = $configurationManager->getConfiguration(ConfigurationManager::CONFIGURATION_TYPE_OBJECTS, CacheFactoryInterface::class); $cacheFactoryClass = isset($cacheFactoryObjectConfiguration['className']) ? $cacheFactoryObjectConfiguration['className'] : CacheFactory::class; /** @var CacheFactory $cacheFactory */ $cacheFactory = new $cacheFactoryClass($bootstrap->getContext(), $environment); $cacheManager = new CacheManager(); $cacheManager->setCacheConfigurations($configurationManager->getConfiguration(ConfigurationManager::CONFIGURATION_TYPE_CACHES)); $cacheManager->injectConfigurationManager($configurationManager); $cacheManager->injectSystemLogger($bootstrap->getEarlyInstance(SystemLoggerInterface::class)); $cacheManager->injectEnvironment($environment); $cacheManager->injectCacheFactory($cacheFactory); $cacheFactory->injectCacheManager($cacheManager); $bootstrap->setEarlyInstance(CacheManager::class, $cacheManager); $bootstrap->setEarlyInstance(CacheFactory::class, $cacheFactory); }