final class ManagedStorage in Drupal 9
Same name and namespace in other branches
- 8 core/lib/Drupal/Core/Config/ManagedStorage.php \Drupal\Core\Config\ManagedStorage
- 10 core/lib/Drupal/Core/Config/ManagedStorage.php \Drupal\Core\Config\ManagedStorage
The managed storage defers all the storage method calls to the manager.
The reason for deferring all the method calls is that the storage interface is the API but we potentially need to do an expensive transformation before the storage can be used so we can't do it in the constructor but we also don't know which method is called first.
This class is not meant to be extended and is final to make sure the assumptions that the storage is retrieved only once are upheld.
Hierarchy
- class \Drupal\Core\Config\ManagedStorage implements StorageInterface
Expanded class hierarchy of ManagedStorage
1 file declares its use of ManagedStorage
- ManagedStorageTest.php in core/
tests/ Drupal/ KernelTests/ Core/ Config/ Storage/ ManagedStorageTest.php
1 string reference to 'ManagedStorage'
- core.services.yml in core/
core.services.yml - core/core.services.yml
1 service uses ManagedStorage
File
- core/
lib/ Drupal/ Core/ Config/ ManagedStorage.php, line 16
Namespace
Drupal\Core\ConfigView source
final class ManagedStorage implements StorageInterface {
/**
* The decorated storage.
*
* @var \Drupal\Core\Config\StorageInterface
*/
protected $storage;
/**
* The storage manager to get the storage to decorate.
*
* @var \Drupal\Core\Config\StorageManagerInterface
*/
protected $manager;
/**
* ManagedStorage constructor.
*
* @param \Drupal\Core\Config\StorageManagerInterface $manager
* The storage manager.
*/
public function __construct(StorageManagerInterface $manager) {
$this->manager = $manager;
}
/**
* {@inheritdoc}
*/
public function exists($name) {
return $this
->getStorage()
->exists($name);
}
/**
* {@inheritdoc}
*/
public function read($name) {
return $this
->getStorage()
->read($name);
}
/**
* {@inheritdoc}
*/
public function readMultiple(array $names) {
return $this
->getStorage()
->readMultiple($names);
}
/**
* {@inheritdoc}
*/
public function write($name, array $data) {
return $this
->getStorage()
->write($name, $data);
}
/**
* {@inheritdoc}
*/
public function delete($name) {
return $this
->getStorage()
->delete($name);
}
/**
* {@inheritdoc}
*/
public function rename($name, $new_name) {
return $this
->getStorage()
->rename($name, $new_name);
}
/**
* {@inheritdoc}
*/
public function encode($data) {
return $this
->getStorage()
->encode($data);
}
/**
* {@inheritdoc}
*/
public function decode($raw) {
return $this
->getStorage()
->decode($raw);
}
/**
* {@inheritdoc}
*/
public function listAll($prefix = '') {
return $this
->getStorage()
->listAll($prefix);
}
/**
* {@inheritdoc}
*/
public function deleteAll($prefix = '') {
return $this
->getStorage()
->deleteAll($prefix);
}
/**
* {@inheritdoc}
*/
public function createCollection($collection) {
// We return the collection directly.
// This means that the collection will not be an instance of ManagedStorage
// But this doesn't matter because the storage is retrieved from the
// manager only the first time it is accessed.
return $this
->getStorage()
->createCollection($collection);
}
/**
* {@inheritdoc}
*/
public function getAllCollectionNames() {
return $this
->getStorage()
->getAllCollectionNames();
}
/**
* {@inheritdoc}
*/
public function getCollectionName() {
return $this
->getStorage()
->getCollectionName();
}
/**
* Get the decorated storage from the manager if necessary.
*
* @return \Drupal\Core\Config\StorageInterface
* The config storage.
*/
protected function getStorage() {
// Get the storage from the manager the first time it is needed.
if (!isset($this->storage)) {
$this->storage = $this->manager
->getStorage();
}
return $this->storage;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ManagedStorage:: |
protected | property | The storage manager to get the storage to decorate. | |
ManagedStorage:: |
protected | property | The decorated storage. | |
ManagedStorage:: |
public | function |
Creates a collection on the storage. Overrides StorageInterface:: |
|
ManagedStorage:: |
public | function |
Decodes configuration data from the storage-specific format. Overrides StorageInterface:: |
|
ManagedStorage:: |
public | function |
Deletes a configuration object from the storage. Overrides StorageInterface:: |
|
ManagedStorage:: |
public | function |
Deletes configuration objects whose names start with a given prefix. Overrides StorageInterface:: |
|
ManagedStorage:: |
public | function |
Encodes configuration data into the storage-specific format. Overrides StorageInterface:: |
|
ManagedStorage:: |
public | function |
Returns whether a configuration object exists. Overrides StorageInterface:: |
|
ManagedStorage:: |
public | function |
Gets the existing collections. Overrides StorageInterface:: |
|
ManagedStorage:: |
public | function |
Gets the name of the current collection the storage is using. Overrides StorageInterface:: |
|
ManagedStorage:: |
protected | function | Get the decorated storage from the manager if necessary. | |
ManagedStorage:: |
public | function |
Gets configuration object names starting with a given prefix. Overrides StorageInterface:: |
|
ManagedStorage:: |
public | function |
Reads configuration data from the storage. Overrides StorageInterface:: |
|
ManagedStorage:: |
public | function |
Reads configuration data from the storage. Overrides StorageInterface:: |
|
ManagedStorage:: |
public | function |
Renames a configuration object in the storage. Overrides StorageInterface:: |
|
ManagedStorage:: |
public | function |
Writes configuration data to the storage. Overrides StorageInterface:: |
|
ManagedStorage:: |
public | function | ManagedStorage constructor. | |
StorageInterface:: |
constant | The default collection name. |