function TypedDataManager::createInstance

Same name in other branches
  1. 9 core/lib/Drupal/Core/TypedData/TypedDataManager.php \Drupal\Core\TypedData\TypedDataManager::createInstance()
  2. 8.9.x core/lib/Drupal/Core/TypedData/TypedDataManager.php \Drupal\Core\TypedData\TypedDataManager::createInstance()
  3. 10 core/lib/Drupal/Core/TypedData/TypedDataManager.php \Drupal\Core\TypedData\TypedDataManager::createInstance()

Overrides PluginManagerBase::createInstance

1 call to TypedDataManager::createInstance()
TypedDataManager::create in core/lib/Drupal/Core/TypedData/TypedDataManager.php
Creates a new typed data object instance.

File

core/lib/Drupal/Core/TypedData/TypedDataManager.php, line 84

Class

TypedDataManager
Manages data type plugins.

Namespace

Drupal\Core\TypedData

Code

public function createInstance($data_type, array $configuration = []) {
    $data_definition = $configuration['data_definition'];
    $type_definition = $this->getDefinition($data_type);
    if (!isset($type_definition)) {
        throw new \InvalidArgumentException("Invalid data type '{$data_type}' has been given");
    }
    // Allow per-data definition overrides of the used classes, i.e. take over
    // classes specified in the type definition.
    $class = $data_definition->getClass();
    if (!isset($class)) {
        throw new PluginException(sprintf('The plugin (%s) did not specify an instance class.', $data_type));
    }
    $typed_data = $class::createInstance($data_definition, $configuration['name'], $configuration['parent']);
    $typed_data->setTypedDataManager($this);
    return $typed_data;
}

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