Chris@0: keyValueStore = $key_value_factory->get('state'); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function get($key, $default = NULL) { Chris@17: $values = $this->getMultiple([$key]); Chris@17: return isset($values[$key]) ? $values[$key] : $default; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function getMultiple(array $keys) { Chris@0: $values = []; Chris@17: $load = []; Chris@0: foreach ($keys as $key) { Chris@17: // Check if we have a value in the cache. Chris@17: if (isset($this->cache[$key])) { Chris@17: $values[$key] = $this->cache[$key]; Chris@17: } Chris@17: // Load the value if we don't have an explicit NULL value. Chris@17: elseif (!array_key_exists($key, $this->cache)) { Chris@17: $load[] = $key; Chris@17: } Chris@0: } Chris@17: Chris@17: if ($load) { Chris@17: $loaded_values = $this->keyValueStore->getMultiple($load); Chris@17: foreach ($load as $key) { Chris@17: // If we find a value, even one that is NULL, add it to the cache and Chris@17: // return it. Chris@17: if (isset($loaded_values[$key]) || array_key_exists($key, $loaded_values)) { Chris@17: $values[$key] = $loaded_values[$key]; Chris@17: $this->cache[$key] = $loaded_values[$key]; Chris@17: } Chris@17: else { Chris@17: $this->cache[$key] = NULL; Chris@17: } Chris@17: } Chris@17: } Chris@17: Chris@0: return $values; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function set($key, $value) { Chris@17: $this->cache[$key] = $value; Chris@0: $this->keyValueStore->set($key, $value); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function setMultiple(array $data) { Chris@0: foreach ($data as $key => $value) { Chris@17: $this->cache[$key] = $value; Chris@0: } Chris@0: $this->keyValueStore->setMultiple($data); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function delete($key) { Chris@17: $this->deleteMultiple([$key]); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function deleteMultiple(array $keys) { Chris@0: foreach ($keys as $key) { Chris@17: unset($this->cache[$key]); Chris@0: } Chris@0: $this->keyValueStore->deleteMultiple($keys); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function resetCache() { Chris@17: $this->cache = []; Chris@0: } Chris@0: Chris@0: }