diff --git a/core/lib/Drupal/Core/Entity/Plugin/DataType/Entity.php b/core/lib/Drupal/Core/Entity/Plugin/DataType/Entity.php index 8526b50..785cde9 100644 --- a/core/lib/Drupal/Core/Entity/Plugin/DataType/Entity.php +++ b/core/lib/Drupal/Core/Entity/Plugin/DataType/Entity.php @@ -6,7 +6,6 @@ */ namespace Drupal\Core\Entity\Plugin\DataType; -use Drupal\Core\Entity\ContentEntityBase; /** * Defines the base plugin for deriving data types for entity types. diff --git a/core/lib/Drupal/Core/Field/FieldDefinition.php b/core/lib/Drupal/Core/Field/FieldDefinition.php index c12c71f..7f760a7 100644 --- a/core/lib/Drupal/Core/Field/FieldDefinition.php +++ b/core/lib/Drupal/Core/Field/FieldDefinition.php @@ -73,7 +73,7 @@ public static function create($type) { public static function createFromItemType($item_type) { // The data type of a field item is in the form of "field_item:$field_type". $parts = explode(':', $item_type, 2); - return FieldDefinition::create($parts[1]); + return static::create($parts[1]); } /** @@ -346,12 +346,12 @@ public function getMainPropertyName() { * https://drupal.org/node/2116341. */ protected function getFieldItemClass() { - if ($class = $this->itemDefinition->getClass()) { + if ($class = $this->getItemDefinition()->getClass()) { return $class; } else { $type_definition = \Drupal::typedDataManager() - ->getDefinition($this->itemDefinition->getDataType()); + ->getDefinition($this->getItemDefinition()->getDataType()); return $type_definition['class']; } } diff --git a/core/lib/Drupal/Core/TypedData/DataDefinition.php b/core/lib/Drupal/Core/TypedData/DataDefinition.php index a902ef0..4bd9e89 100644 --- a/core/lib/Drupal/Core/TypedData/DataDefinition.php +++ b/core/lib/Drupal/Core/TypedData/DataDefinition.php @@ -29,15 +29,15 @@ class DataDefinition implements DataDefinitionInterface, \ArrayAccess { * A new DataDefinition object. */ public static function create($type) { - return self::createFromDataType($type); + $definition['type'] = $type; + return new static($definition); } /** * {@inheritdoc} */ public static function createFromDataType($type) { - $definition['type'] = $type; - return new static($definition); + return self::$type($type); } /** diff --git a/core/lib/Drupal/Core/TypedData/DataDefinitionInterface.php b/core/lib/Drupal/Core/TypedData/DataDefinitionInterface.php index 593c752..7e18ff1 100644 --- a/core/lib/Drupal/Core/TypedData/DataDefinitionInterface.php +++ b/core/lib/Drupal/Core/TypedData/DataDefinitionInterface.php @@ -29,8 +29,14 @@ /** * Creates a new data definition object. * - * This method is usually called by the manager; i.e., - * \Drupal\Core\TypedData\TypedDataManager::createDataDefinition(). + * This method is typically used by + * \Drupal\Core\TypedData\TypedDataManager::createDataDefinition() to build a + * definition object for an arbitrary data type. When the definition class is + * known, it is recommended to directly use the static create() method on that + * class instead; e.g.: + * @code + * $map_definition = \Drupal\Core\TypedData\MapDataDefinition::create(); + * @endcode * * @param string $data_type * The data type, for which a data definition should be created. diff --git a/core/lib/Drupal/Core/TypedData/ListDataDefinitionInterface.php b/core/lib/Drupal/Core/TypedData/ListDataDefinitionInterface.php index 4c1be08..1270d83 100644 --- a/core/lib/Drupal/Core/TypedData/ListDataDefinitionInterface.php +++ b/core/lib/Drupal/Core/TypedData/ListDataDefinitionInterface.php @@ -21,8 +21,14 @@ /** * Creates a new list data definition for items of the given data type. * - * This method is usually called by the manager; i.e., - * \Drupal\Core\TypedData\TypedDataManager::createListDataDefinition(). + * This method is typically used by + * \Drupal\Core\TypedData\TypedDataManager::createListDataDefinition() to + * build a definition object for an arbitrary item type. When the definition + * class is known, it is recommended to directly use the static create() + * method on that class instead; e.g.: + * @code + * $list_definition = \Drupal\Core\TypedData\ListDataDefinition::create('string'); + * @endcode * * @param string $item_type * The item type, for which a list data definition should be created. diff --git a/core/lib/Drupal/Core/TypedData/TypedDataManager.php b/core/lib/Drupal/Core/TypedData/TypedDataManager.php index 322ee1b..f8c9ab4 100644 --- a/core/lib/Drupal/Core/TypedData/TypedDataManager.php +++ b/core/lib/Drupal/Core/TypedData/TypedDataManager.php @@ -142,7 +142,7 @@ public function create(DataDefinitionInterface $definition, $value = NULL, $name * E.g., if a definition for a map is to be created, the following code * could be used instead of calling this method with the argument 'map': * @code - * $map_definition = \Drupal\Core\TypedData\MapDefinition::create(); + * $map_definition = \Drupal\Core\TypedData\MapDataDefinition::create(); * @endcode * * @param string $data_type diff --git a/core/modules/field/lib/Drupal/field/Entity/FieldConfig.php b/core/modules/field/lib/Drupal/field/Entity/FieldConfig.php index 0d53f42..418fd31 100644 --- a/core/modules/field/lib/Drupal/field/Entity/FieldConfig.php +++ b/core/modules/field/lib/Drupal/field/Entity/FieldConfig.php @@ -725,7 +725,7 @@ public static function createFromDataType($type) { public static function createFromItemType($item_type) { // Forward to the field definition class for creating new data definitions // via the typed manager. - return FieldDefinition::createFromDataType($item_type); + return FieldDefinition::createFromItemType($item_type); } /** diff --git a/core/modules/field/lib/Drupal/field/Entity/FieldInstanceConfig.php b/core/modules/field/lib/Drupal/field/Entity/FieldInstanceConfig.php index 4f1b13b..445dc23 100644 --- a/core/modules/field/lib/Drupal/field/Entity/FieldInstanceConfig.php +++ b/core/modules/field/lib/Drupal/field/Entity/FieldInstanceConfig.php @@ -648,7 +648,7 @@ public static function createFromDataType($type) { public static function createFromItemType($item_type) { // Forward to the field definition class for creating new data definitions // via the typed manager. - return FieldDefinition::createFromDataType($item_type); + return FieldDefinition::createFromItemType($item_type); } public function getDataType() {