class ListDataDefinition
Same name in other branches
- 9 core/lib/Drupal/Core/TypedData/ListDataDefinition.php \Drupal\Core\TypedData\ListDataDefinition
- 8.9.x core/lib/Drupal/Core/TypedData/ListDataDefinition.php \Drupal\Core\TypedData\ListDataDefinition
- 10 core/lib/Drupal/Core/TypedData/ListDataDefinition.php \Drupal\Core\TypedData\ListDataDefinition
A typed data definition class for defining lists.
Hierarchy
- class \Drupal\Core\TypedData\DataDefinition implements \Drupal\Core\TypedData\DataDefinitionInterface, \Drupal\Core\TypedData\ArrayAccess uses \Drupal\Core\TypedData\TypedDataTrait
- class \Drupal\Core\TypedData\ListDataDefinition extends \Drupal\Core\TypedData\DataDefinition implements \Drupal\Core\TypedData\ListDataDefinitionInterface
Expanded class hierarchy of ListDataDefinition
7 files declare their use of ListDataDefinition
- BaseFieldDefinition.php in core/
lib/ Drupal/ Core/ Field/ BaseFieldDefinition.php - DataType.php in core/
lib/ Drupal/ Core/ TypedData/ Attribute/ DataType.php - FieldDefinition.php in core/
lib/ Drupal/ Core/ Field/ FieldDefinition.php - ItemList.php in core/
lib/ Drupal/ Core/ TypedData/ Plugin/ DataType/ ItemList.php - SequenceDataDefinition.php in core/
lib/ Drupal/ Core/ Config/ Schema/ SequenceDataDefinition.php
File
-
core/
lib/ Drupal/ Core/ TypedData/ ListDataDefinition.php, line 8
Namespace
Drupal\Core\TypedDataView source
class ListDataDefinition extends DataDefinition implements ListDataDefinitionInterface {
/**
* The data definition of a list item.
*
* @var \Drupal\Core\TypedData\DataDefinitionInterface
*/
protected $itemDefinition;
/**
* Creates a new list definition.
*
* @param string $item_type
* The data type of the list items; e.g., 'string', 'integer' or 'any'.
*
* @return static
* A new List Data Definition object.
*/
public static function create($item_type) {
return static::createFromItemType($item_type);
}
/**
* {@inheritdoc}
*/
public static function createFromDataType($type) {
$definition = parent::createFromDataType($type);
// If nothing else given, default to a list of 'any' items.
$definition->itemDefinition = DataDefinition::create('any');
return $definition;
}
/**
* {@inheritdoc}
*/
public static function createFromItemType($item_type) {
return new static([], \Drupal::typedDataManager()->createDataDefinition($item_type));
}
/**
* {@inheritdoc}
*/
public function __construct(array $values = [], ?DataDefinitionInterface $item_definition = NULL) {
$this->definition = $values;
$this->itemDefinition = $item_definition;
}
/**
* {@inheritdoc}
*/
public function getDataType() {
return 'list';
}
/**
* {@inheritdoc}
*/
public function setDataType($type) {
if ($type != 'list') {
throw new \LogicException('Lists must always be of data type "list".');
}
}
/**
* {@inheritdoc}
*/
public function getClass() {
if (!empty($this->definition['class'])) {
return $this->definition['class'];
}
// If a list definition is used but no class has been specified, derive the
// default list class from the item type.
$item_type_definition = \Drupal::typedDataManager()->getDefinition($this->getItemDefinition()
->getDataType());
if (!$item_type_definition) {
throw new \LogicException("An invalid data type '{$this->getItemDefinition()->getDataType()}' has been specified for list items");
}
return $item_type_definition['list_class'];
}
/**
* {@inheritdoc}
*/
public function getItemDefinition() {
return $this->itemDefinition;
}
/**
* Sets the item definition.
*
* @param \Drupal\Core\TypedData\DataDefinitionInterface $definition
* A list item's data definition.
*
* @return $this
*/
public function setItemDefinition(DataDefinitionInterface $definition) {
$this->itemDefinition = $definition;
return $this;
}
/**
* Magic method: Implements a deep clone.
*/
public function __clone() {
// Ensure the itemDefinition property is actually cloned by overwriting the
// original reference.
$this->itemDefinition = clone $this->itemDefinition;
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overriden Title | Overrides |
---|---|---|---|---|---|
DataDefinition::$definition | protected | property | The array holding values for all definition keys. | ||
DataDefinition::addConstraint | public | function | Adds a validation constraint. | Overrides DataDefinitionInterface::addConstraint | |
DataDefinition::getConstraint | public | function | Returns a validation constraint. | Overrides DataDefinitionInterface::getConstraint | |
DataDefinition::getConstraints | public | function | Returns an array of validation constraints. | Overrides DataDefinitionInterface::getConstraints | 1 |
DataDefinition::getDescription | public | function | Returns a human readable description. | Overrides DataDefinitionInterface::getDescription | |
DataDefinition::getLabel | public | function | Returns a human readable label. | Overrides DataDefinitionInterface::getLabel | 1 |
DataDefinition::getSetting | public | function | Returns the value of a given setting. | Overrides DataDefinitionInterface::getSetting | 2 |
DataDefinition::getSettings | public | function | Returns the array of settings, as required by the used class. | Overrides DataDefinitionInterface::getSettings | 2 |
DataDefinition::isComputed | public | function | Determines whether the data value is computed. | Overrides DataDefinitionInterface::isComputed | |
DataDefinition::isInternal | public | function | Determines whether the data value is internal. | Overrides DataDefinitionInterface::isInternal | 1 |
DataDefinition::isList | public | function | Returns whether the data is multi-valued, i.e. a list of data items. | Overrides DataDefinitionInterface::isList | |
DataDefinition::isReadOnly | public | function | Determines whether the data is read-only. | Overrides DataDefinitionInterface::isReadOnly | |
DataDefinition::isRequired | public | function | Determines whether a data value is required. | Overrides DataDefinitionInterface::isRequired | |
DataDefinition::offsetExists | public | function | This is for BC support only. @todo Remove in https://www.drupal.org/node/1928868. |
||
DataDefinition::offsetGet | public | function | This is for BC support only. @todo Remove in https://www.drupal.org/node/1928868. |
||
DataDefinition::offsetSet | public | function | This is for BC support only. @todo Remove in https://www.drupal.org/node/1928868. |
||
DataDefinition::offsetUnset | public | function | This is for BC support only. @todo Remove in https://www.drupal.org/node/1928868. |
||
DataDefinition::setClass | public | function | Sets the class used for creating the typed data object. | ||
DataDefinition::setComputed | public | function | Sets whether the data is computed. | ||
DataDefinition::setConstraints | public | function | Sets an array of validation constraints. | ||
DataDefinition::setDescription | public | function | Sets the human-readable description. | ||
DataDefinition::setInternal | public | function | Sets the whether the data value should be internal. | ||
DataDefinition::setLabel | public | function | Sets the human-readable label. | ||
DataDefinition::setReadOnly | public | function | Sets whether the data is read-only. | ||
DataDefinition::setRequired | public | function | Sets whether the data is required. | ||
DataDefinition::setSetting | public | function | Sets a definition setting. | 2 | |
DataDefinition::setSettings | public | function | Sets the array of settings, as required by the used class. | 2 | |
DataDefinition::toArray | public | function | Returns all definition values as array. | ||
DataDefinition::__sleep | public | function | 2 | ||
ListDataDefinition::$itemDefinition | protected | property | The data definition of a list item. | ||
ListDataDefinition::create | public static | function | Creates a new list definition. | Overrides DataDefinition::create | 1 |
ListDataDefinition::createFromDataType | public static | function | Creates a new data definition object. | Overrides DataDefinition::createFromDataType | |
ListDataDefinition::createFromItemType | public static | function | Creates a new list data definition for items of the given data type. | Overrides ListDataDefinitionInterface::createFromItemType | 1 |
ListDataDefinition::getClass | public | function | Returns the class used for creating the typed data object. | Overrides DataDefinition::getClass | |
ListDataDefinition::getDataType | public | function | Returns the data type of the data. | Overrides DataDefinition::getDataType | 1 |
ListDataDefinition::getItemDefinition | public | function | Gets the data definition of an item of the list. | Overrides ListDataDefinitionInterface::getItemDefinition | |
ListDataDefinition::setDataType | public | function | Sets the data type. | Overrides DataDefinition::setDataType | |
ListDataDefinition::setItemDefinition | public | function | Sets the item definition. | ||
ListDataDefinition::__clone | public | function | Magic method: Implements a deep clone. | 1 | |
ListDataDefinition::__construct | public | function | Constructs a new data definition object. | Overrides DataDefinition::__construct | |
TypedDataTrait::$typedDataManager | protected | property | The typed data manager used for creating the data types. | ||
TypedDataTrait::getTypedDataManager | public | function | Gets the typed data manager. | 2 | |
TypedDataTrait::setTypedDataManager | public | function | Sets the typed data manager. | 2 |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.