class ConfigEntityAdapter

Same name and namespace in other branches
  1. 9 core/lib/Drupal/Core/Entity/Plugin/DataType/ConfigEntityAdapter.php \Drupal\Core\Entity\Plugin\DataType\ConfigEntityAdapter
  2. 10 core/lib/Drupal/Core/Entity/Plugin/DataType/ConfigEntityAdapter.php \Drupal\Core\Entity\Plugin\DataType\ConfigEntityAdapter
  3. 11.x core/lib/Drupal/Core/Entity/Plugin/DataType/ConfigEntityAdapter.php \Drupal\Core\Entity\Plugin\DataType\ConfigEntityAdapter

Enhances EntityAdapter for config entities.

Hierarchy

Expanded class hierarchy of ConfigEntityAdapter

2 files declare their use of ConfigEntityAdapter
ConfigEntityAdapterTest.php in core/tests/Drupal/KernelTests/Core/Entity/ConfigEntityAdapterTest.php
EntityDeriver.php in core/lib/Drupal/Core/Entity/Plugin/DataType/Deriver/EntityDeriver.php

File

core/lib/Drupal/Core/Entity/Plugin/DataType/ConfigEntityAdapter.php, line 12

Namespace

Drupal\Core\Entity\Plugin\DataType
View source
class ConfigEntityAdapter extends EntityAdapter {
    
    /**
     * The wrapped entity object.
     *
     * @var \Drupal\Core\Config\Entity\ConfigEntityInterface
     */
    protected $entity;
    
    /**
     * The typed config manager.
     *
     * @var \Drupal\Core\Config\TypedConfigManagerInterface
     */
    protected $typedConfigManager;
    
    /**
     * {@inheritdoc}
     */
    public function get($property_name) {
        if (!isset($this->entity)) {
            throw new MissingDataException("Unable to get property {$property_name} as no entity has been provided.");
        }
        return $this->getConfigTypedData()
            ->get($property_name);
    }
    
    /**
     * {@inheritdoc}
     */
    public function set($property_name, $value, $notify = TRUE) {
        if (!isset($this->entity)) {
            throw new MissingDataException("Unable to set property {$property_name} as no entity has been provided.");
        }
        $this->entity
            ->set($property_name, $value, $notify);
        return $this;
    }
    
    /**
     * {@inheritdoc}
     */
    public function getProperties($include_computed = FALSE) {
        if (!isset($this->entity)) {
            throw new MissingDataException('Unable to get properties as no entity has been provided.');
        }
        return $this->getConfigTypedData()
            ->getProperties($include_computed);
    }
    
    /**
     * {@inheritdoc}
     */
    public function onChange($property_name) {
        if (isset($this->entity)) {
            // Let the entity know of any changes.
            $this->getConfigTypedData()
                ->onChange($property_name);
        }
    }
    
    /**
     * {@inheritdoc}
     */
    public function getIterator() {
        if (isset($this->entity)) {
            return $this->getConfigTypedData()
                ->getIterator();
        }
        return new \ArrayIterator([]);
    }
    
    /**
     * Gets the typed config manager.
     *
     * @return \Drupal\Core\Config\TypedConfigManagerInterface
     *   The typed config manager.
     */
    protected function getTypedConfigManager() {
        if (empty($this->typedConfigManager)) {
            // Use the typed data manager if it is also the typed config manager.
            // @todo Remove this in https://www.drupal.org/node/3011137.
            $typed_data_manager = $this->getTypedDataManager();
            if ($typed_data_manager instanceof TypedConfigManagerInterface) {
                $this->typedConfigManager = $typed_data_manager;
            }
            else {
                $this->typedConfigManager = \Drupal::service('config.typed');
            }
        }
        return $this->typedConfigManager;
    }
    
    /**
     * {@inheritdoc}
     *
     * @todo Remove this in https://www.drupal.org/node/3011137.
     */
    public function getTypedDataManager() {
        if (empty($this->typedDataManager)) {
            $this->typedDataManager = \Drupal::service('config.typed');
        }
        return $this->typedDataManager;
    }
    
    /**
     * {@inheritdoc}
     *
     * @todo Remove this in https://www.drupal.org/node/3011137.
     */
    public function setTypedDataManager(TypedDataManagerInterface $typed_data_manager) {
        $this->typedDataManager = $typed_data_manager;
        if ($typed_data_manager instanceof TypedConfigManagerInterface) {
            $this->typedConfigManager = $typed_data_manager;
        }
        return $this;
    }
    
    /**
     * {@inheritdoc}
     */
    public function applyDefaultValue($notify = TRUE) {
        // @todo Figure out what to do for this method, see
        //   https://www.drupal.org/project/drupal/issues/2945635.
        throw new \BadMethodCallException('Method not supported');
    }
    
    /**
     * Gets typed data for config entity.
     *
     * @return \Drupal\Core\TypedData\ComplexDataInterface
     *   The typed data.
     */
    protected function getConfigTypedData() {
        return $this->getTypedConfigManager()
            ->createFromNameAndData($this->entity
            ->getConfigDependencyName(), $this->entity
            ->toArray());
    }

}

Members

Title Sort descending Modifiers Object type Summary Overriden Title Overrides
ConfigEntityAdapter::$entity protected property The wrapped entity object. Overrides EntityAdapter::$entity
ConfigEntityAdapter::$typedConfigManager protected property The typed config manager.
ConfigEntityAdapter::applyDefaultValue public function Applies the default value. Overrides EntityAdapter::applyDefaultValue
ConfigEntityAdapter::get public function Gets a property object. Overrides EntityAdapter::get
ConfigEntityAdapter::getConfigTypedData protected function Gets typed data for config entity.
ConfigEntityAdapter::getIterator public function Overrides EntityAdapter::getIterator
ConfigEntityAdapter::getProperties public function Gets an array of property objects. Overrides EntityAdapter::getProperties
ConfigEntityAdapter::getTypedConfigManager protected function Gets the typed config manager.
ConfigEntityAdapter::getTypedDataManager public function @todo Remove this in https://www.drupal.org/node/3011137. Overrides TypedDataTrait::getTypedDataManager
ConfigEntityAdapter::onChange public function React to changes to a child property or item. Overrides EntityAdapter::onChange
ConfigEntityAdapter::set public function Sets a property value. Overrides EntityAdapter::set
ConfigEntityAdapter::setTypedDataManager public function @todo Remove this in https://www.drupal.org/node/3011137. Overrides TypedDataTrait::setTypedDataManager
DependencySerializationTrait::$_entityStorages protected property An array of entity type IDs keyed by the property name of their storages.
DependencySerializationTrait::$_serviceIds protected property An array of service IDs keyed by property name used for serialization.
DependencySerializationTrait::__sleep public function 1
DependencySerializationTrait::__wakeup public function 2
EntityAdapter::createFromEntity public static function Creates an instance wrapping the given entity.
EntityAdapter::getEntity public function Returns the wrapped entity object.
EntityAdapter::getString public function Returns a string representation of the data. Overrides TypedData::getString
EntityAdapter::getValue public function Gets the data value. Overrides TypedData::getValue
EntityAdapter::isEmpty public function Determines whether the data structure is empty. Overrides ComplexDataInterface::isEmpty
EntityAdapter::setValue public function Sets the data value. Overrides TypedData::setValue
EntityAdapter::toArray public function Returns an array of all property values. Overrides ComplexDataInterface::toArray
StringTranslationTrait::$stringTranslation protected property The string translation service.
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.
TypedData::$definition protected property The data definition. 1
TypedData::$name protected property The property name.
TypedData::$parent protected property The parent typed data object.
TypedData::createInstance public static function Constructs a TypedData object given its definition and context. Overrides TypedDataInterface::createInstance
TypedData::getConstraints public function Gets a list of validation constraints. Overrides TypedDataInterface::getConstraints 9
TypedData::getDataDefinition public function Gets the data definition. Overrides TypedDataInterface::getDataDefinition
TypedData::getName public function Returns the name of a property or item. Overrides TypedDataInterface::getName
TypedData::getParent public function Returns the parent data structure; i.e. either complex data or a list. Overrides TypedDataInterface::getParent
TypedData::getPluginDefinition public function Gets the definition of the plugin implementation. Overrides PluginInspectionInterface::getPluginDefinition
TypedData::getPluginId public function Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface::getPluginId
TypedData::getPropertyPath public function Returns the property path of the data. Overrides TypedDataInterface::getPropertyPath
TypedData::getRoot public function Returns the root of the typed data tree. Overrides TypedDataInterface::getRoot
TypedData::setContext public function Sets the context of a property or item via a context aware parent. Overrides TypedDataInterface::setContext
TypedData::validate public function Validates the currently set data value. Overrides TypedDataInterface::validate
TypedData::__construct public function Constructs a TypedData object given its definition and context. 3
TypedDataTrait::$typedDataManager protected property The typed data manager used for creating the data types.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.