final class ManagedStorage in Drupal 10
Same name and namespace in other branches
- 8 core/lib/Drupal/Core/Config/ManagedStorage.php \Drupal\Core\Config\ManagedStorage
- 9 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 \Drupal\Core\Config\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;
}
}