function TypedDataManager::create

Creates a new typed data object wrapping the passed value.

Parameters

array $definition: The data definition array with the following array keys and values:

  • type: The data type of the data to wrap. Required.
  • label: A human readable label.
  • description: A human readable description.
  • list: Whether the data is multi-valued, i.e. a list of data items. Defaults to FALSE.
  • computed: A boolean specifying whether the data value is computed by the object, e.g. depending on some other values.
  • read-only: A boolean specifying whether the data is read-only. Defaults to TRUE for computed properties, to FALSE otherwise.
  • class: If set and 'list' is FALSE, the class to use for creating the typed data object; otherwise the default class of the data type will be used.
  • list class: If set and 'list' is TRUE, the class to use for creating the typed data object; otherwise the default list class of the data type will be used.
  • settings: An array of settings, as required by the used 'class'. See the documentation of the class for supported or required settings.
  • list settings: An array of settings as required by the used 'list class'. See the documentation of the list class for support or required settings.
  • constraints: An array of type specific value constraints, e.g. for data of type 'entity' the 'entity type' and 'bundle' may be specified. See the documentation of the data type 'class' for supported constraints.
  • required: A boolean specifying whether a non-NULL value is mandatory.

Further keys may be supported in certain usages, e.g. for further keys supported for entity field definitions see Drupal\Core\Entity\StorageControllerInterface::getPropertyDefinitions().

mixed $value: (optional) The data value. If set, it has to match one of the supported data type format as documented for the data type classes.

array $context: (optional) An array describing the context of the data object, e.g. its name or parent data structure. The context should be passed if a typed data object is created as part of a data structure. The following keys are supported:

Return value

Drupal\Core\TypedData\TypedDataInterface

See also

typed_data()

Drupal\Core\TypedData\Type\Integer

Drupal\Core\TypedData\Type\Float

Drupal\Core\TypedData\Type\String

Drupal\Core\TypedData\Type\Boolean

Drupal\Core\TypedData\Type\Duration

Drupal\Core\TypedData\Type\Date

Drupal\Core\TypedData\Type\Uri

Drupal\Core\TypedData\Type\Binary

Drupal\Core\Entity\Field\EntityWrapper

File

drupal/core/lib/Drupal/Core/TypedData/TypedDataManager.php, line 96
Definition of Drupal\Core\TypedData\TypedDataManager.

Class

TypedDataManager
Manages data type plugins.

Namespace

Drupal\Core\TypedData

Code

function create(array $definition, $value = NULL, array $context = array()) {
  $wrapper = $this
    ->createInstance($definition['type'], $definition);
  if (isset($value)) {
    $wrapper
      ->setValue($value);
  }
  if ($wrapper instanceof ContextAwareInterface) {
    if (isset($context['name'])) {
      $wrapper
        ->setName($context['name']);
    }
    if (isset($context['parent'])) {
      $wrapper
        ->setParent($context['parent']);
    }
  }
  return $wrapper;
}