diff --git a/framework/core/src/Core/Settings/CachedSettingsRepository.php b/framework/core/src/Core/Settings/CachedSettingsRepository.php new file mode 100644 index 000000000..0f5cb3c8f --- /dev/null +++ b/framework/core/src/Core/Settings/CachedSettingsRepository.php @@ -0,0 +1,45 @@ +inner = $inner; + } + + public function all() + { + if (!$this->isCached) { + $this->cache = $this->inner->all(); + $this->isCached = true; + } + + return $this->cache; + } + + public function get($key, $default = null) + { + if (array_key_exists($key, $this->cache)) { + return $this->cache[$key]; + } else if (!$this->isCached) { + return array_get($this->all(), $key, $default); + } + + return $default; + } + + public function set($key, $value) + { + $this->cache[$key] = $value; + + $this->inner->set($key, $value); + } +}