
| Current Path : /var/www/html/ift/web/core/lib/Drupal/Core/KeyValueStore/ |
Linux ift1.ift-informatik.de 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 |
| Current File : /var/www/html/ift/web/core/lib/Drupal/Core/KeyValueStore/KeyValueFactory.php |
<?php
namespace Drupal\Core\KeyValueStore;
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
* Defines the key/value store factory.
*/
class KeyValueFactory implements KeyValueFactoryInterface {
/**
* The specific setting name prefix.
*
* The collection name will be prefixed with this constant and used as a
* setting name. The setting value will be the id of a service.
*/
const SPECIFIC_PREFIX = 'keyvalue_service_';
/**
* The default setting name.
*
* This is a setting name that will be used if the specific setting does not
* exist. The setting value will be the id of a service.
*/
const DEFAULT_SETTING = 'default';
/**
* The default service id.
*
* If the default setting does not exist, this is the default service id.
*/
const DEFAULT_SERVICE = 'keyvalue.database';
/**
* Instantiated stores, keyed by collection name.
*
* @var array
*/
protected $stores = [];
/**
* @var \Symfony\Component\DependencyInjection\ContainerInterface
*/
protected $container;
/**
* @param \Symfony\Component\DependencyInjection\ContainerInterface $container
* The service container.
* @param array $options
* (optional) Collection-specific storage override options.
*/
public function __construct(ContainerInterface $container, array $options = []) {
$this->container = $container;
$this->options = $options;
}
/**
* {@inheritdoc}
*/
public function get($collection) {
if (!isset($this->stores[$collection])) {
if (isset($this->options[$collection])) {
$service_id = $this->options[$collection];
}
elseif (isset($this->options[static::DEFAULT_SETTING])) {
$service_id = $this->options[static::DEFAULT_SETTING];
}
else {
$service_id = static::DEFAULT_SERVICE;
}
$this->stores[$collection] = $this->container->get($service_id)->get($collection);
}
return $this->stores[$collection];
}
}