public function TypedDataFactory::createInstance

Implements Drupal\Component\Plugin\Factory\FactoryInterface::createInstance().

Parameters

string $plugin_id: The id of a plugin, i.e. the data type.

array $configuration: The plugin configuration, i.e. the data definition.

Return value

Drupal\Core\TypedData\TypedDataInterface

Overrides DefaultFactory::createInstance

File

drupal/core/lib/Drupal/Core/TypedData/TypedDataFactory.php, line 31
Definition of Drupal\Core\TypedData\TypedDataFactory.

Class

TypedDataFactory
A factory for typed data objects.

Namespace

Drupal\Core\TypedData

Code

public function createInstance($plugin_id, array $configuration) {
  $type_definition = $this->discovery
    ->getDefinition($plugin_id);

  // Allow per-data definition overrides of the used classes and generally
  // default to the data type definition.
  $definition = $configuration + $type_definition;
  if (empty($definition['list'])) {
    if (empty($definition['class'])) {
      throw new PluginException(sprintf('The plugin (%s) did not specify an instance class.', $plugin_id));
    }
    $plugin_class = $definition['class'];
  }
  else {
    if (empty($definition['list class'])) {
      throw new PluginException(sprintf('The plugin (%s) did not specify a list instance class.', $plugin_id));
    }
    $plugin_class = $definition['list class'];
  }
  return new $plugin_class($definition, $plugin_id, $this->discovery);
}