class Config
Same name in this branch
- 10 composer/Plugin/VendorHardening/Config.php \Drupal\Composer\Plugin\VendorHardening\Config
- 10 core/modules/migrate_drupal/src/Plugin/migrate/source/d8/Config.php \Drupal\migrate_drupal\Plugin\migrate\source\d8\Config
- 10 core/modules/migrate/src/Plugin/migrate/destination/Config.php \Drupal\migrate\Plugin\migrate\destination\Config
Same name in other branches
- 9 composer/Plugin/VendorHardening/Config.php \Drupal\Composer\Plugin\VendorHardening\Config
- 9 core/modules/migrate_drupal/src/Plugin/migrate/source/d8/Config.php \Drupal\migrate_drupal\Plugin\migrate\source\d8\Config
- 9 core/modules/migrate/src/Plugin/migrate/destination/Config.php \Drupal\migrate\Plugin\migrate\destination\Config
- 9 core/lib/Drupal/Core/Config/Config.php \Drupal\Core\Config\Config
- 8.9.x composer/Plugin/VendorHardening/Config.php \Drupal\Composer\Plugin\VendorHardening\Config
- 8.9.x core/modules/migrate_drupal/src/Plugin/migrate/source/d8/Config.php \Drupal\migrate_drupal\Plugin\migrate\source\d8\Config
- 8.9.x core/modules/migrate/src/Plugin/migrate/destination/Config.php \Drupal\migrate\Plugin\migrate\destination\Config
- 8.9.x core/lib/Drupal/Core/Config/Config.php \Drupal\Core\Config\Config
- 11.x composer/Plugin/VendorHardening/Config.php \Drupal\Composer\Plugin\VendorHardening\Config
- 11.x core/modules/migrate_drupal/src/Plugin/migrate/source/d8/Config.php \Drupal\migrate_drupal\Plugin\migrate\source\d8\Config
- 11.x core/modules/migrate/src/Plugin/migrate/destination/Config.php \Drupal\migrate\Plugin\migrate\destination\Config
- 11.x core/lib/Drupal/Core/Config/Config.php \Drupal\Core\Config\Config
Defines the default configuration object.
Encapsulates all capabilities needed for configuration handling for a specific configuration object, including support for runtime overrides. The overrides are handled on top of the stored configuration so they are not saved back to storage.
Hierarchy
- class \Drupal\Core\Config\ConfigBase implements \Drupal\Core\Cache\RefinableCacheableDependencyInterface uses \Drupal\Core\DependencyInjection\DependencySerializationTrait, \Drupal\Core\Cache\RefinableCacheableDependencyTrait
- class \Drupal\Core\Config\StorableConfigBase extends \Drupal\Core\Config\ConfigBase
- class \Drupal\Core\Config\Config extends \Drupal\Core\Config\StorableConfigBase
- class \Drupal\Core\Config\StorableConfigBase extends \Drupal\Core\Config\ConfigBase
Expanded class hierarchy of Config
Related topics
28 files declare their use of Config
- BlockTheme.php in core/
modules/ block/ src/ Plugin/ migrate/ process/ BlockTheme.php - BlockThemeDeprecationTest.php in core/
modules/ block/ tests/ src/ Unit/ Plugin/ migrate/ process/ BlockThemeDeprecationTest.php - CheckpointStorage.php in core/
lib/ Drupal/ Core/ Config/ Checkpoint/ CheckpointStorage.php - CheckpointStorageTest.php in core/
tests/ Drupal/ Tests/ Core/ Config/ Checkpoint/ CheckpointStorageTest.php - ConfigCRUDTest.php in core/
tests/ Drupal/ KernelTests/ Core/ Config/ ConfigCRUDTest.php
139 string references to 'Config'
- action_settings.yml in core/
modules/ system/ migrations/ action_settings.yml - core/modules/system/migrations/action_settings.yml
- book_settings.yml in core/
modules/ book/ migrations/ book_settings.yml - core/modules/book/migrations/book_settings.yml
- BootstrapConfigStorageFactory::getDatabaseStorage in core/
lib/ Drupal/ Core/ Config/ BootstrapConfigStorageFactory.php - Returns a Database configuration storage implementation.
- CachedStorageTest::setUp in core/
tests/ Drupal/ KernelTests/ Core/ Config/ Storage/ CachedStorageTest.php - ChangeUserRoleBase::calculateDependencies in core/
modules/ user/ src/ Plugin/ Action/ ChangeUserRoleBase.php - Calculates dependencies for the configured plugin.
File
-
core/
lib/ Drupal/ Core/ Config/ Config.php, line 19
Namespace
Drupal\Core\ConfigView source
class Config extends StorableConfigBase {
/**
* An event dispatcher instance to use for configuration events.
*
* @var \Symfony\Contracts\EventDispatcher\EventDispatcherInterface
*/
protected $eventDispatcher;
/**
* The current runtime data.
*
* The configuration data from storage merged with module and settings
* overrides.
*
* @var array
*/
protected $overriddenData;
/**
* The current module overrides.
*
* @var array
*/
protected $moduleOverrides;
/**
* The current settings overrides.
*
* @var array
*/
protected $settingsOverrides;
/**
* Constructs a configuration object.
*
* @param string $name
* The name of the configuration object being constructed.
* @param \Drupal\Core\Config\StorageInterface $storage
* A storage object to use for reading and writing the
* configuration data.
* @param \Symfony\Contracts\EventDispatcher\EventDispatcherInterface $event_dispatcher
* An event dispatcher instance to use for configuration events.
* @param \Drupal\Core\Config\TypedConfigManagerInterface $typed_config
* The typed configuration manager service.
*/
public function __construct($name, StorageInterface $storage, EventDispatcherInterface $event_dispatcher, TypedConfigManagerInterface $typed_config) {
$this->name = $name;
$this->storage = $storage;
$this->eventDispatcher = $event_dispatcher;
$this->typedConfigManager = $typed_config;
}
/**
* {@inheritdoc}
*/
public function initWithData(array $data) {
parent::initWithData($data);
$this->resetOverriddenData();
return $this;
}
/**
* {@inheritdoc}
*/
public function get($key = '') {
if (!isset($this->overriddenData)) {
$this->setOverriddenData();
}
if (empty($key)) {
return $this->overriddenData;
}
else {
$parts = explode('.', $key);
if (count($parts) == 1) {
return $this->overriddenData[$key] ?? NULL;
}
else {
$value = NestedArray::getValue($this->overriddenData, $parts, $key_exists);
return $key_exists ? $value : NULL;
}
}
}
/**
* {@inheritdoc}
*/
public function setData(array $data) {
parent::setData($data);
$this->resetOverriddenData();
return $this;
}
/**
* Sets settings.php overrides for this configuration object.
*
* The overridden data only applies to this configuration object.
*
* @param array $data
* The overridden values of the configuration data.
*
* @return $this
* The configuration object.
*/
public function setSettingsOverride(array $data) {
$this->settingsOverrides = $data;
$this->resetOverriddenData();
return $this;
}
/**
* Sets module overrides for this configuration object.
*
* @param array $data
* The overridden values of the configuration data.
*
* @return $this
* The configuration object.
*/
public function setModuleOverride(array $data) {
$this->moduleOverrides = $data;
$this->resetOverriddenData();
return $this;
}
/**
* Sets the current data for this configuration object.
*
* Configuration overrides operate at two distinct layers: modules and
* settings.php. Overrides in settings.php take precedence over values
* provided by modules. Precedence or different module overrides is
* determined by the priority of the config.factory.override tagged services.
*
* @return $this
* The configuration object.
*/
protected function setOverriddenData() {
$this->overriddenData = $this->data;
if (isset($this->moduleOverrides) && is_array($this->moduleOverrides)) {
$this->overriddenData = NestedArray::mergeDeepArray([
$this->overriddenData,
$this->moduleOverrides,
], TRUE);
}
if (isset($this->settingsOverrides) && is_array($this->settingsOverrides)) {
$this->overriddenData = NestedArray::mergeDeepArray([
$this->overriddenData,
$this->settingsOverrides,
], TRUE);
}
return $this;
}
/**
* Resets the current data, so overrides are re-applied.
*
* This method should be called after the original data or the overridden data
* has been changed.
*
* @return $this
* The configuration object.
*/
protected function resetOverriddenData() {
unset($this->overriddenData);
return $this;
}
/**
* {@inheritdoc}
*/
public function set($key, $value) {
parent::set($key, $value);
$this->resetOverriddenData();
return $this;
}
/**
* {@inheritdoc}
*/
public function clear($key) {
parent::clear($key);
$this->resetOverriddenData();
return $this;
}
/**
* {@inheritdoc}
*/
public function save($has_trusted_data = FALSE) {
// Validate the configuration object name before saving.
static::validateName($this->name);
// If there is a schema for this configuration object, cast all values to
// conform to the schema.
if (!$has_trusted_data) {
if ($this->typedConfigManager
->hasConfigSchema($this->name)) {
// Ensure that the schema wrapper has the latest data.
$this->schemaWrapper = NULL;
$this->data = $this->castValue(NULL, $this->data);
}
else {
foreach ($this->data as $key => $value) {
$this->validateValue($key, $value);
}
}
}
// Potentially configuration schema could have changed the underlying data's
// types.
$this->resetOverriddenData();
$this->storage
->write($this->name, $this->data);
if (!$this->isNew) {
Cache::invalidateTags($this->getCacheTags());
}
$this->isNew = FALSE;
$event_name = $this->getStorage()
->getCollectionName() === StorageInterface::DEFAULT_COLLECTION ? ConfigEvents::SAVE : ConfigCollectionEvents::SAVE_IN_COLLECTION;
$this->eventDispatcher
->dispatch(new ConfigCrudEvent($this), $event_name);
$this->originalData = $this->data;
return $this;
}
/**
* Deletes the configuration object.
*
* @return $this
* The configuration object.
*/
public function delete() {
$this->data = [];
$this->storage
->delete($this->name);
Cache::invalidateTags($this->getCacheTags());
$this->isNew = TRUE;
$this->resetOverriddenData();
$event_name = $this->getStorage()
->getCollectionName() === StorageInterface::DEFAULT_COLLECTION ? ConfigEvents::DELETE : ConfigCollectionEvents::DELETE_IN_COLLECTION;
$this->eventDispatcher
->dispatch(new ConfigCrudEvent($this), $event_name);
$this->originalData = $this->data;
return $this;
}
/**
* Gets original data from this configuration object.
*
* Original data is the data as it is immediately after loading from
* configuration storage before any changes. If this is a new configuration
* object it will be an empty array.
*
* @see \Drupal\Core\Config\Config::get()
*
* @param string $key
* A string that maps to a key within the configuration data.
* @param bool $apply_overrides
* Apply any overrides to the original data. Defaults to TRUE.
*
* @return mixed
* The data that was requested.
*/
public function getOriginal($key = '', $apply_overrides = TRUE) {
$original_data = $this->originalData;
if ($apply_overrides) {
// Apply overrides.
if (isset($this->moduleOverrides) && is_array($this->moduleOverrides)) {
$original_data = NestedArray::mergeDeepArray([
$original_data,
$this->moduleOverrides,
], TRUE);
}
if (isset($this->settingsOverrides) && is_array($this->settingsOverrides)) {
$original_data = NestedArray::mergeDeepArray([
$original_data,
$this->settingsOverrides,
], TRUE);
}
}
if (empty($key)) {
return $original_data;
}
else {
$parts = explode('.', $key);
if (count($parts) == 1) {
return $original_data[$key] ?? NULL;
}
else {
$value = NestedArray::getValue($original_data, $parts, $key_exists);
return $key_exists ? $value : NULL;
}
}
}
/**
* Determines if overrides are applied to a key for this configuration object.
*
* @param string $key
* (optional) A string that maps to a key within the configuration data.
* For instance in the following configuration array:
* @code
* [
* 'foo' => [
* 'bar' => 'baz',
* ],
* ];
* @endcode
* A key of 'foo.bar' would map to the string 'baz'. However, a key of 'foo'
* would map to the ['bar' => 'baz'].
* If not supplied TRUE will be returned if there are any overrides at all
* for this configuration object.
*
* @return bool
* TRUE if there are any overrides for the key, otherwise FALSE.
*/
public function hasOverrides($key = '') {
if (empty($key)) {
return !(empty($this->moduleOverrides) && empty($this->settingsOverrides));
}
else {
$parts = explode('.', $key);
$override_exists = FALSE;
if (isset($this->moduleOverrides) && is_array($this->moduleOverrides)) {
$override_exists = NestedArray::keyExists($this->moduleOverrides, $parts);
}
if (!$override_exists && isset($this->settingsOverrides) && is_array($this->settingsOverrides)) {
$override_exists = NestedArray::keyExists($this->settingsOverrides, $parts);
}
return $override_exists;
}
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overriden Title | Overrides |
---|---|---|---|---|---|
CacheableDependencyTrait::$cacheContexts | protected | property | Cache contexts. | ||
CacheableDependencyTrait::$cacheMaxAge | protected | property | Cache max-age. | ||
CacheableDependencyTrait::$cacheTags | protected | property | Cache tags. | ||
CacheableDependencyTrait::setCacheability | protected | function | Sets cacheability; useful for value object constructors. | ||
Config::$eventDispatcher | protected | property | An event dispatcher instance to use for configuration events. | ||
Config::$moduleOverrides | protected | property | The current module overrides. | ||
Config::$overriddenData | protected | property | The current runtime data. | ||
Config::$settingsOverrides | protected | property | The current settings overrides. | ||
Config::clear | public | function | Unsets a value in this configuration object. | Overrides ConfigBase::clear | 1 |
Config::delete | public | function | Deletes the configuration object. | Overrides StorableConfigBase::delete | 1 |
Config::get | public | function | Gets data from this configuration object. | Overrides ConfigBase::get | |
Config::getOriginal | public | function | Gets original data from this configuration object. | Overrides StorableConfigBase::getOriginal | |
Config::hasOverrides | public | function | Determines if overrides are applied to a key for this configuration object. | ||
Config::initWithData | public | function | Initializes a configuration object with pre-loaded data. | Overrides StorableConfigBase::initWithData | |
Config::resetOverriddenData | protected | function | Resets the current data, so overrides are re-applied. | ||
Config::save | public | function | Saves the configuration object. | Overrides StorableConfigBase::save | 1 |
Config::set | public | function | Sets a value in this configuration object. | Overrides ConfigBase::set | 1 |
Config::setData | public | function | Replaces the data of this configuration object. | Overrides ConfigBase::setData | |
Config::setModuleOverride | public | function | Sets module overrides for this configuration object. | ||
Config::setOverriddenData | protected | function | Sets the current data for this configuration object. | ||
Config::setSettingsOverride | public | function | Sets settings.php overrides for this configuration object. | ||
Config::__construct | public | function | Constructs a configuration object. | ||
ConfigBase::$data | protected | property | The data of the configuration object. | ||
ConfigBase::$name | protected | property | The name of the configuration object. | ||
ConfigBase::castSafeStrings | protected | function | Casts any objects that implement MarkupInterface to string. | ||
ConfigBase::getCacheContexts | public | function | The cache contexts associated with this object. | Overrides CacheableDependencyTrait::getCacheContexts | |
ConfigBase::getCacheMaxAge | public | function | The maximum age for which this object may be cached. | Overrides CacheableDependencyTrait::getCacheMaxAge | |
ConfigBase::getCacheTags | public | function | The cache tags associated with this object. | Overrides CacheableDependencyTrait::getCacheTags | 1 |
ConfigBase::getName | public | function | Returns the name of this configuration object. | ||
ConfigBase::MAX_NAME_LENGTH | constant | The maximum length of a configuration object name. | |||
ConfigBase::merge | public | function | Merges data into a configuration object. | ||
ConfigBase::setName | public | function | Sets the name of this configuration object. | ||
ConfigBase::validateKeys | protected | function | Validates all keys in a passed in config array structure. | ||
ConfigBase::validateName | public static | function | Validates the configuration object name. | ||
DependencySerializationTrait::$_entityStorages | protected | property | |||
DependencySerializationTrait::$_serviceIds | protected | property | |||
DependencySerializationTrait::__sleep | public | function | 1 | ||
DependencySerializationTrait::__wakeup | public | function | 2 | ||
RefinableCacheableDependencyTrait::addCacheableDependency | public | function | 1 | ||
RefinableCacheableDependencyTrait::addCacheContexts | public | function | |||
RefinableCacheableDependencyTrait::addCacheTags | public | function | |||
RefinableCacheableDependencyTrait::mergeCacheMaxAge | public | function | |||
StorableConfigBase::$isNew | protected | property | Whether the configuration object is new or has been saved to the storage. | ||
StorableConfigBase::$originalData | protected | property | The data of the configuration object. | ||
StorableConfigBase::$schemaWrapper | protected | property | The config schema wrapper object for this configuration object. | ||
StorableConfigBase::$storage | protected | property | The storage used to load and save this configuration object. | ||
StorableConfigBase::$typedConfigManager | protected | property | The typed config manager. | ||
StorableConfigBase::castValue | protected | function | Casts the value to correct data type using the configuration schema. | ||
StorableConfigBase::getRawData | public | function | Gets the raw data without any manipulations. | ||
StorableConfigBase::getSchemaWrapper | protected | function | Gets the schema wrapper for the whole configuration object. | ||
StorableConfigBase::getStorage | public | function | Retrieves the storage used to load and save this configuration object. | ||
StorableConfigBase::isNew | public | function | Returns whether this configuration object is new. | ||
StorableConfigBase::validateValue | protected | function | Validate the values are allowed data types. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.