Drupal 8.0.0 beta 12. More info: https://www.drupal.org/node/2514176
This commit is contained in:
commit
9921556621
13277 changed files with 1459781 additions and 0 deletions
126
core/lib/Drupal/Core/State/State.php
Normal file
126
core/lib/Drupal/Core/State/State.php
Normal file
|
@ -0,0 +1,126 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Contains \Drupal\Core\State\State.
|
||||
*/
|
||||
|
||||
namespace Drupal\Core\State;
|
||||
|
||||
use Drupal\Core\KeyValueStore\KeyValueFactoryInterface;
|
||||
|
||||
/**
|
||||
* Provides the state system using a key value store.
|
||||
*/
|
||||
class State implements StateInterface {
|
||||
|
||||
/**
|
||||
* The key value store to use.
|
||||
*
|
||||
* @var \Drupal\Core\KeyValueStore\KeyValueStoreInterface
|
||||
*/
|
||||
protected $keyValueStore;
|
||||
|
||||
/**
|
||||
* Static state cache.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $cache = array();
|
||||
|
||||
/**
|
||||
* Constructs a State object.
|
||||
*
|
||||
* @param \Drupal\Core\KeyValueStore\KeyValueFactoryInterface $key_value_factory
|
||||
* The key value store to use.
|
||||
*/
|
||||
function __construct(KeyValueFactoryInterface $key_value_factory) {
|
||||
$this->keyValueStore = $key_value_factory->get('state');
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function get($key, $default = NULL) {
|
||||
$values = $this->getMultiple(array($key));
|
||||
return isset($values[$key]) ? $values[$key] : $default;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getMultiple(array $keys) {
|
||||
$values = array();
|
||||
$load = array();
|
||||
foreach ($keys as $key) {
|
||||
// Check if we have a value in the cache.
|
||||
if (isset($this->cache[$key])) {
|
||||
$values[$key] = $this->cache[$key];
|
||||
}
|
||||
// Load the value if we don't have an explicit NULL value.
|
||||
elseif (!array_key_exists($key, $this->cache)) {
|
||||
$load[] = $key;
|
||||
}
|
||||
}
|
||||
|
||||
if ($load) {
|
||||
$loaded_values = $this->keyValueStore->getMultiple($load);
|
||||
foreach ($load as $key) {
|
||||
// If we find a value, even one that is NULL, add it to the cache and
|
||||
// return it.
|
||||
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;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function set($key, $value) {
|
||||
$this->cache[$key] = $value;
|
||||
$this->keyValueStore->set($key, $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function setMultiple(array $data) {
|
||||
foreach ($data as $key => $value) {
|
||||
$this->cache[$key] = $value;
|
||||
}
|
||||
$this->keyValueStore->setMultiple($data);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function delete($key) {
|
||||
$this->deleteMultiple(array($key));
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function deleteMultiple(array $keys) {
|
||||
foreach ($keys as $key) {
|
||||
unset($this->cache[$key]);
|
||||
}
|
||||
$this->keyValueStore->deleteMultiple($keys);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function resetCache() {
|
||||
$this->cache = array();
|
||||
}
|
||||
|
||||
}
|
82
core/lib/Drupal/Core/State/StateInterface.php
Normal file
82
core/lib/Drupal/Core/State/StateInterface.php
Normal file
|
@ -0,0 +1,82 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Contains \Drupal\Core\State\StateInterface.
|
||||
*/
|
||||
|
||||
namespace Drupal\Core\State;
|
||||
|
||||
/**
|
||||
* Defines the interface for the state system.
|
||||
*
|
||||
* @ingroup state_api
|
||||
*/
|
||||
interface StateInterface {
|
||||
|
||||
/**
|
||||
* Returns the stored value for a given key.
|
||||
*
|
||||
* @param string $key
|
||||
* The key of the data to retrieve.
|
||||
* @param mixed $default
|
||||
* The default value to use if the key is not found.
|
||||
*
|
||||
* @return mixed
|
||||
* The stored value, or NULL if no value exists.
|
||||
*/
|
||||
public function get($key, $default = NULL);
|
||||
|
||||
/**
|
||||
* Returns the stored key/value pairs for a given set of keys.
|
||||
*
|
||||
* @param array $keys
|
||||
* A list of keys to retrieve.
|
||||
*
|
||||
* @return array
|
||||
* An associative array of items successfully returned, indexed by key.
|
||||
*/
|
||||
public function getMultiple(array $keys);
|
||||
|
||||
/**
|
||||
* Saves a value for a given key.
|
||||
*
|
||||
* @param string $key
|
||||
* The key of the data to store.
|
||||
* @param mixed $value
|
||||
* The data to store.
|
||||
*/
|
||||
public function set($key, $value);
|
||||
|
||||
/**
|
||||
* Saves key/value pairs.
|
||||
*
|
||||
* @param array $data
|
||||
* An associative array of key/value pairs.
|
||||
*/
|
||||
public function setMultiple(array $data);
|
||||
|
||||
/**
|
||||
* Deletes an item.
|
||||
*
|
||||
* @param string $key
|
||||
* The item name to delete.
|
||||
*/
|
||||
public function delete($key);
|
||||
|
||||
/**
|
||||
* Deletes multiple items.
|
||||
*
|
||||
* @param array $keys
|
||||
* A list of item names to delete.
|
||||
*/
|
||||
public function deleteMultiple(array $keys);
|
||||
|
||||
/**
|
||||
* Resets the static cache.
|
||||
*
|
||||
* This is mainly used in testing environments.
|
||||
*/
|
||||
public function resetCache();
|
||||
|
||||
}
|
Reference in a new issue