config = $config; $this->setCache = new Cache(); $this->delCache = new Cache(); } /** {@inheritDoc} */ public function set(string $cat, string $key, $value): ISetConfigValuesTransactionally { $this->setCache->set($cat, $key, $value, Cache::SOURCE_DATA); $this->changedConfig = true; return $this; } /** {@inheritDoc} */ public function delete(string $cat, string $key): ISetConfigValuesTransactionally { $this->delCache->set($cat, $key, true, Cache::SOURCE_DATA); $this->changedConfig = true; return $this; } /** {@inheritDoc} */ public function commit(): void { // If nothing changed, just do nothing :) if (!$this->changedConfig) { return; } try { $this->config->setAndSave($this->setCache, $this->delCache); $this->setCache = new Cache(); $this->delCache = new Cache(); } catch (\Exception $e) { throw new ConfigPersistenceException('Cannot save config', $e); } } }