config = $config; $this->writer = $writer; $this->banAll = $banAll; } /** * Whether a cache type is enabled or not at the moment * * @param string $cacheType * @return bool */ public function isEnabled($cacheType) { $this->load(); return (bool)($this->statuses[$cacheType] ?? false); } /** * Enable/disable a cache type in run-time * * @param string $cacheType * @param bool $isEnabled * @return void */ public function setEnabled($cacheType, $isEnabled) { $this->load(); $this->statuses[$cacheType] = (int)$isEnabled; } /** * Save the current statuses (enabled/disabled) of cache types to the persistent storage * * @return void */ public function persist() { $this->load(); $this->writer->saveConfig([ConfigFilePool::APP_ENV => [self::CACHE_KEY => $this->statuses]]); } /** * Load statuses (enabled/disabled) of cache types * * @return void */ private function load() { if (null === $this->statuses) { $this->statuses = []; if ($this->banAll) { return; } $this->statuses = $this->config->getConfigData(self::CACHE_KEY) ?: []; } } }