ListDataDefinition.php in Zircon Profile 8.0
File
core/lib/Drupal/Core/TypedData/ListDataDefinition.php
View source
<?php
namespace Drupal\Core\TypedData;
class ListDataDefinition extends DataDefinition implements ListDataDefinitionInterface {
protected $itemDefinition;
public static function create($item_type) {
return static::createFromItemType($item_type);
}
public static function createFromDataType($type) {
$definition = parent::createFromDataType($type);
$definition->itemDefinition = DataDefinition::create('any');
return $definition;
}
public static function createFromItemType($item_type) {
return new static(array(), \Drupal::typedDataManager()
->createDataDefinition($item_type));
}
public function __construct(array $values = array(), DataDefinitionInterface $item_definition = NULL) {
$this->definition = $values;
$this->itemDefinition = $item_definition;
}
public function getDataType() {
return 'list';
}
public function setDataType($type) {
if ($type != 'list') {
throw new \LogicException('Lists must always be of data type "list".');
}
}
public function getClass() {
$class = isset($this->definition['class']) ? $this->definition['class'] : NULL;
if (!empty($class)) {
return $class;
}
else {
$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'];
}
}
public function getItemDefinition() {
return $this->itemDefinition;
}
public function setItemDefinition(DataDefinitionInterface $definition) {
$this->itemDefinition = $definition;
return $this;
}
}