State.php in Drupal 9
File
core/lib/Drupal/Core/State/State.php
View source
<?php
namespace Drupal\Core\State;
use Drupal\Core\KeyValueStore\KeyValueFactoryInterface;
class State implements StateInterface {
protected $keyValueStore;
protected $cache = [];
public function __construct(KeyValueFactoryInterface $key_value_factory) {
$this->keyValueStore = $key_value_factory
->get('state');
}
public function get($key, $default = NULL) {
$values = $this
->getMultiple([
$key,
]);
return isset($values[$key]) ? $values[$key] : $default;
}
public function getMultiple(array $keys) {
$values = [];
$load = [];
foreach ($keys as $key) {
if (isset($this->cache[$key])) {
$values[$key] = $this->cache[$key];
}
elseif (!array_key_exists($key, $this->cache)) {
$load[] = $key;
}
}
if ($load) {
$loaded_values = $this->keyValueStore
->getMultiple($load);
foreach ($load as $key) {
if (isset($loaded_values[$key]) || array_key_exists($key, $loaded_values)) {
$values[$key] = $loaded_values[$key];
$this->cache[$key] = $loaded_values[$key];
}
else {
$this->cache[$key] = NULL;
}
}
}
return $values;
}
public function set($key, $value) {
$this->cache[$key] = $value;
$this->keyValueStore
->set($key, $value);
}
public function setMultiple(array $data) {
foreach ($data as $key => $value) {
$this->cache[$key] = $value;
}
$this->keyValueStore
->setMultiple($data);
}
public function delete($key) {
$this
->deleteMultiple([
$key,
]);
}
public function deleteMultiple(array $keys) {
foreach ($keys as $key) {
unset($this->cache[$key]);
}
$this->keyValueStore
->deleteMultiple($keys);
}
public function resetCache() {
$this->cache = [];
}
}
Classes
Name |
Description |
State |
Provides the state system using a key value store. |