class TypedDataManager

Manages data type plugins.

Hierarchy

Expanded class hierarchy of TypedDataManager

File

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

Namespace

Drupal\Core\TypedData
View source
class TypedDataManager extends PluginManagerBase {
  public function __construct() {
    $this->discovery = new CacheDecorator(new HookDiscovery('data_type_info'), 'typed_data:types');
    $this->factory = new TypedDataFactory($this->discovery);
  }

  /**
   * Implements Drupal\Component\Plugin\PluginManagerInterface::createInstance().
   *
   * @param string $plugin_id
   *   The id of a plugin, i.e. the data type.
   * @param array $configuration
   *   The plugin configuration, i.e. the data definition.
   *
   * @return Drupal\Core\TypedData\TypedDataInterface
   */
  public function createInstance($plugin_id, array $configuration) {
    return $this->factory
      ->createInstance($plugin_id, $configuration);
  }

  /**
   * Creates a new typed data object wrapping the passed value.
   *
   * @param 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().
   * @param 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.
   * @param 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:
   *   - name: The name associated with the data.
   *   - parent: The parent object containing the data. Must be an instance of
   *     Drupal\Core\TypedData\ComplexDataInterface or
   *     Drupal\Core\TypedData\ListInterface.
   *
   * @return Drupal\Core\TypedData\TypedDataInterface
   *
   * @see typed_data()
   * @see Drupal\Core\TypedData\Type\Integer
   * @see Drupal\Core\TypedData\Type\Float
   * @see Drupal\Core\TypedData\Type\String
   * @see Drupal\Core\TypedData\Type\Boolean
   * @see Drupal\Core\TypedData\Type\Duration
   * @see Drupal\Core\TypedData\Type\Date
   * @see Drupal\Core\TypedData\Type\Uri
   * @see Drupal\Core\TypedData\Type\Binary
   * @see Drupal\Core\Entity\Field\EntityWrapper
   */
  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;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
PluginManagerBase::$defaults protected property A set of defaults to be referenced by $this->processDefinition() if additional processing of plugins is necessary or helpful for development purposes. 4
PluginManagerBase::$discovery protected property The object that discovers plugins managed by this manager.
PluginManagerBase::$factory protected property The object that instantiates plugins managed by this manager.
PluginManagerBase::$mapper protected property The object that returns the preconfigured plugin instance appropriate for a particular runtime condition.
PluginManagerBase::clearCachedDefinitions public function Implements \Drupal\Component\Plugin\Discovery\CachedDiscoveryInterface::clearCachedDefinitions(). Overrides CachedDiscoveryInterface::clearCachedDefinitions
PluginManagerBase::getDefinition public function Implements Drupal\Component\Plugin\PluginManagerInterface::getDefinition(). Overrides DiscoveryInterface::getDefinition 1
PluginManagerBase::getDefinitions public function Implements Drupal\Component\Plugin\PluginManagerInterface::getDefinitions(). Overrides DiscoveryInterface::getDefinitions 1
PluginManagerBase::getInstance public function Implements Drupal\Component\Plugin\PluginManagerInterface::getInstance(). Overrides MapperInterface::getInstance 3
PluginManagerBase::processDefinition public function Performs extra processing on plugin definitions. 2
TypedDataManager::create function Creates a new typed data object wrapping the passed value.
TypedDataManager::createInstance public function Implements Drupal\Component\Plugin\PluginManagerInterface::createInstance(). Overrides PluginManagerBase::createInstance
TypedDataManager::__construct public function