1<?php 2 3namespace Drupal\Core\Entity\Annotation; 4 5use Drupal\Component\Annotation\Plugin; 6use Drupal\Core\StringTranslation\StringTranslationTrait; 7 8/** 9 * Defines an Entity type annotation object. 10 * 11 * Entity type plugins use an object-based annotation method, rather than an 12 * array-type annotation method (as commonly used on other annotation types). 13 * The annotation properties of entity types are found on 14 * \Drupal\Core\Entity\EntityType and are accessed using get/set methods defined 15 * in \Drupal\Core\Entity\EntityTypeInterface. 16 * 17 * @ingroup entity_api 18 * 19 * @Annotation 20 */ 21class EntityType extends Plugin { 22 23 use StringTranslationTrait; 24 25 /** 26 * The class used to represent the entity type. 27 * 28 * It must implement \Drupal\Core\Entity\EntityTypeInterface. 29 * 30 * @var string 31 */ 32 public $entity_type_class = 'Drupal\Core\Entity\EntityType'; 33 34 /** 35 * The group machine name. 36 * 37 * @var string 38 */ 39 public $group = 'default'; 40 41 /** 42 * The group label. 43 * 44 * @var \Drupal\Core\Annotation\Translation 45 * 46 * @ingroup plugin_translatable 47 */ 48 public $group_label = ''; 49 50 /** 51 * {@inheritdoc} 52 */ 53 public function get() { 54 $values = $this->definition; 55 56 // Use the specified entity type class, and remove it before instantiating. 57 $class = $values['entity_type_class']; 58 unset($values['entity_type_class']); 59 60 return new $class($values); 61 } 62 63} 64