3 namespace Drupal\Core\State;
5 use Drupal\Core\Cache\CacheBackendInterface;
6 use Drupal\Core\Cache\CacheCollector;
7 use Drupal\Core\KeyValueStore\KeyValueFactoryInterface;
8 use Drupal\Core\Lock\LockBackendInterface;
11 * Provides the state system using a key value store.
13 class State extends CacheCollector implements StateInterface {
16 * The key value store to use.
18 * @var \Drupal\Core\KeyValueStore\KeyValueStoreInterface
20 protected $keyValueStore;
23 * Constructs a State object.
25 * @param \Drupal\Core\KeyValueStore\KeyValueFactoryInterface $key_value_factory
26 * The key value store to use.
27 * @param \Drupal\Core\Cache\CacheBackendInterface $cache
29 * @param \Drupal\Core\Lock\LockBackendInterface $lock
32 public function __construct(KeyValueFactoryInterface $key_value_factory, CacheBackendInterface $cache, LockBackendInterface $lock) {
33 parent::__construct('state', $cache, $lock);
34 $this->keyValueStore = $key_value_factory->get('state');
40 public function get($key, $default = NULL) {
41 $value = parent::get($key);
42 return $value !== NULL ? $value : $default;
48 protected function resolveCacheMiss($key) {
49 $value = $this->keyValueStore->get($key);
50 $this->storage[$key] = $value;
58 public function getMultiple(array $keys) {
60 foreach ($keys as $key) {
61 $values[$key] = $this->get($key);
69 public function set($key, $value) {
70 parent::set($key, $value);
71 $this->keyValueStore->set($key, $value);
77 public function setMultiple(array $data) {
78 foreach ($data as $key => $value) {
79 parent::set($key, $value);
81 $this->keyValueStore->setMultiple($data);
87 public function delete($key) {
89 $this->deleteMultiple([$key]);
95 public function deleteMultiple(array $keys) {
96 foreach ($keys as $key) {
99 $this->keyValueStore->deleteMultiple($keys);
105 public function resetCache() {