123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508 |
- <?php
- namespace Drupal\Core\Entity;
- use Drupal\Core\Access\AccessibleInterface;
- use Drupal\Core\Cache\CacheableDependencyInterface;
- use Drupal\Core\Cache\RefinableCacheableDependencyInterface;
- /**
- * Defines a common interface for all entity objects.
- *
- * @ingroup entity_api
- */
- interface EntityInterface extends AccessibleInterface, CacheableDependencyInterface, RefinableCacheableDependencyInterface {
- /**
- * Gets the entity UUID (Universally Unique Identifier).
- *
- * The UUID is guaranteed to be unique and can be used to identify an entity
- * across multiple systems.
- *
- * @return string|null
- * The UUID of the entity, or NULL if the entity does not have one.
- */
- public function uuid();
- /**
- * Gets the identifier.
- *
- * @return string|int|null
- * The entity identifier, or NULL if the object does not yet have an
- * identifier.
- */
- public function id();
- /**
- * Gets the language of the entity.
- *
- * @return \Drupal\Core\Language\LanguageInterface
- * The language object.
- */
- public function language();
- /**
- * Determines whether the entity is new.
- *
- * Usually an entity is new if no ID exists for it yet. However, entities may
- * be enforced to be new with existing IDs too.
- *
- * @return bool
- * TRUE if the entity is new, or FALSE if the entity has already been saved.
- *
- * @see \Drupal\Core\Entity\EntityInterface::enforceIsNew()
- */
- public function isNew();
- /**
- * Enforces an entity to be new.
- *
- * Allows migrations to create entities with pre-defined IDs by forcing the
- * entity to be new before saving.
- *
- * @param bool $value
- * (optional) Whether the entity should be forced to be new. Defaults to
- * TRUE.
- *
- * @return $this
- *
- * @see \Drupal\Core\Entity\EntityInterface::isNew()
- */
- public function enforceIsNew($value = TRUE);
- /**
- * Gets the ID of the type of the entity.
- *
- * @return string
- * The entity type ID.
- */
- public function getEntityTypeId();
- /**
- * Gets the bundle of the entity.
- *
- * @return string
- * The bundle of the entity. Defaults to the entity type ID if the entity
- * type does not make use of different bundles.
- */
- public function bundle();
- /**
- * Gets the label of the entity.
- *
- * @return string|null
- * The label of the entity, or NULL if there is no label defined.
- */
- public function label();
- /**
- * Gets the URL object for the entity.
- *
- * @param string $rel
- * The link relationship type, for example: canonical or edit-form.
- * @param array $options
- * See \Drupal\Core\Routing\UrlGeneratorInterface::generateFromRoute() for
- * the available options.
- *
- * @return \Drupal\Core\Url
- * The URL object.
- *
- * @deprecated in Drupal 8.0.0, intended to be removed in Drupal 9.0.0
- * Use \Drupal\Core\Entity\EntityInterface::toUrl() instead.
- *
- * @see https://www.drupal.org/node/2614344
- * @see \Drupal\Core\Entity\EntityInterface::toUrl
- */
- public function urlInfo($rel = 'canonical', array $options = []);
- /**
- * Gets the URL object for the entity.
- *
- * The entity must have an id already. Content entities usually get their IDs
- * by saving them.
- *
- * URI templates might be set in the links array in an annotation, for
- * example:
- * @code
- * links = {
- * "canonical" = "/node/{node}",
- * "edit-form" = "/node/{node}/edit",
- * "version-history" = "/node/{node}/revisions"
- * }
- * @endcode
- * or specified in a callback function set like:
- * @code
- * uri_callback = "comment_uri",
- * @endcode
- * If the path is not set in the links array, the uri_callback function is
- * used for setting the path. If this does not exist and the link relationship
- * type is canonical, the path is set using the default template:
- * entity/entityType/id.
- *
- * @param string $rel
- * The link relationship type, for example: canonical or edit-form.
- * @param array $options
- * See \Drupal\Core\Routing\UrlGeneratorInterface::generateFromRoute() for
- * the available options.
- *
- * @return \Drupal\Core\Url
- * The URL object.
- *
- * @throws \Drupal\Core\Entity\EntityMalformedException
- * @throws \Drupal\Core\Entity\Exception\UndefinedLinkTemplateException
- */
- public function toUrl($rel = 'canonical', array $options = []);
- /**
- * Gets the public URL for this entity.
- *
- * @param string $rel
- * The link relationship type, for example: canonical or edit-form.
- * @param array $options
- * See \Drupal\Core\Routing\UrlGeneratorInterface::generateFromRoute() for
- * the available options.
- *
- * @return string
- * The URL for this entity.
- *
- * @deprecated in Drupal 8.0.0, intended to be removed in Drupal 9.0.0
- * Please use toUrl() instead.
- *
- * @see https://www.drupal.org/node/2614344
- * @see \Drupal\Core\Entity\EntityInterface::toUrl
- */
- public function url($rel = 'canonical', $options = []);
- /**
- * Deprecated way of generating a link to the entity. See toLink().
- *
- * @param string|null $text
- * (optional) The link text for the anchor tag as a translated string.
- * If NULL, it will use the entity's label. Defaults to NULL.
- * @param string $rel
- * (optional) The link relationship type. Defaults to 'canonical'.
- * @param array $options
- * See \Drupal\Core\Routing\UrlGeneratorInterface::generateFromRoute() for
- * the available options.
- *
- * @return string
- * An HTML string containing a link to the entity.
- *
- * @deprecated in Drupal 8.0.0, intended to be removed in Drupal 9.0.0
- * Please use toLink() instead.
- *
- * @see https://www.drupal.org/node/2614344
- * @see \Drupal\Core\Entity\EntityInterface::toLink
- */
- public function link($text = NULL, $rel = 'canonical', array $options = []);
- /**
- * Generates the HTML for a link to this entity.
- *
- * @param string|null $text
- * (optional) The link text for the anchor tag as a translated string.
- * If NULL, it will use the entity's label. Defaults to NULL.
- * @param string $rel
- * (optional) The link relationship type. Defaults to 'canonical'.
- * @param array $options
- * See \Drupal\Core\Routing\UrlGeneratorInterface::generateFromRoute() for
- * the available options.
- *
- * @return \Drupal\Core\Link
- * A Link to the entity.
- *
- * @throws \Drupal\Core\Entity\EntityMalformedException
- * @throws \Drupal\Core\Entity\Exception\UndefinedLinkTemplateException
- */
- public function toLink($text = NULL, $rel = 'canonical', array $options = []);
- /**
- * Indicates if a link template exists for a given key.
- *
- * @param string $key
- * The link type.
- *
- * @return bool
- * TRUE if the link template exists, FALSE otherwise.
- */
- public function hasLinkTemplate($key);
- /**
- * Gets a list of URI relationships supported by this entity.
- *
- * @return string[]
- * An array of link relationships supported by this entity.
- */
- public function uriRelationships();
- /**
- * Loads an entity.
- *
- * @param mixed $id
- * The id of the entity to load.
- *
- * @return static
- * The entity object or NULL if there is no entity with the given ID.
- */
- public static function load($id);
- /**
- * Loads one or more entities.
- *
- * @param array $ids
- * An array of entity IDs, or NULL to load all entities.
- *
- * @return static[]
- * An array of entity objects indexed by their IDs.
- */
- public static function loadMultiple(array $ids = NULL);
- /**
- * Constructs a new entity object, without permanently saving it.
- *
- * @param array $values
- * (optional) An array of values to set, keyed by property name. If the
- * entity type has bundles, the bundle key has to be specified.
- *
- * @return static
- * The entity object.
- */
- public static function create(array $values = []);
- /**
- * Saves an entity permanently.
- *
- * When saving existing entities, the entity is assumed to be complete,
- * partial updates of entities are not supported.
- *
- * @return int
- * Either SAVED_NEW or SAVED_UPDATED, depending on the operation performed.
- *
- * @throws \Drupal\Core\Entity\EntityStorageException
- * In case of failures an exception is thrown.
- */
- public function save();
- /**
- * Deletes an entity permanently.
- *
- * @throws \Drupal\Core\Entity\EntityStorageException
- * In case of failures an exception is thrown.
- */
- public function delete();
- /**
- * Acts on an entity before the presave hook is invoked.
- *
- * Used before the entity is saved and before invoking the presave hook. Note
- * that in case of translatable content entities this callback is only fired
- * on their current translation. It is up to the developer to iterate
- * over all translations if needed. This is different from its counterpart in
- * the Field API, FieldItemListInterface::preSave(), which is fired on all
- * field translations automatically.
- * @todo Adjust existing implementations and the documentation according to
- * https://www.drupal.org/node/2577609 to have a consistent API.
- *
- * @param \Drupal\Core\Entity\EntityStorageInterface $storage
- * The entity storage object.
- *
- * @see \Drupal\Core\Field\FieldItemListInterface::preSave()
- *
- * @throws \Exception
- * When there is a problem that should prevent saving the entity.
- */
- public function preSave(EntityStorageInterface $storage);
- /**
- * Acts on a saved entity before the insert or update hook is invoked.
- *
- * Used after the entity is saved, but before invoking the insert or update
- * hook. Note that in case of translatable content entities this callback is
- * only fired on their current translation. It is up to the developer to
- * iterate over all translations if needed.
- *
- * @param \Drupal\Core\Entity\EntityStorageInterface $storage
- * The entity storage object.
- * @param bool $update
- * TRUE if the entity has been updated, or FALSE if it has been inserted.
- */
- public function postSave(EntityStorageInterface $storage, $update = TRUE);
- /**
- * Changes the values of an entity before it is created.
- *
- * Load defaults for example.
- *
- * @param \Drupal\Core\Entity\EntityStorageInterface $storage
- * The entity storage object.
- * @param mixed[] $values
- * An array of values to set, keyed by property name. If the entity type has
- * bundles the bundle key has to be specified.
- */
- public static function preCreate(EntityStorageInterface $storage, array &$values);
- /**
- * Acts on a created entity before hooks are invoked.
- *
- * Used after the entity is created, but before saving the entity and before
- * any of the presave hooks are invoked.
- *
- * See the @link entity_crud Entity CRUD topic @endlink for more information.
- *
- * @param \Drupal\Core\Entity\EntityStorageInterface $storage
- * The entity storage object.
- *
- * @see \Drupal\Core\Entity\EntityInterface::create()
- */
- public function postCreate(EntityStorageInterface $storage);
- /**
- * Acts on entities before they are deleted and before hooks are invoked.
- *
- * Used before the entities are deleted and before invoking the delete hook.
- *
- * @param \Drupal\Core\Entity\EntityStorageInterface $storage
- * The entity storage object.
- * @param \Drupal\Core\Entity\EntityInterface[] $entities
- * An array of entities.
- */
- public static function preDelete(EntityStorageInterface $storage, array $entities);
- /**
- * Acts on deleted entities before the delete hook is invoked.
- *
- * Used after the entities are deleted but before invoking the delete hook.
- *
- * @param \Drupal\Core\Entity\EntityStorageInterface $storage
- * The entity storage object.
- * @param \Drupal\Core\Entity\EntityInterface[] $entities
- * An array of entities.
- */
- public static function postDelete(EntityStorageInterface $storage, array $entities);
- /**
- * Acts on loaded entities.
- *
- * @param \Drupal\Core\Entity\EntityStorageInterface $storage
- * The entity storage object.
- * @param \Drupal\Core\Entity\EntityInterface[] $entities
- * An array of entities.
- */
- public static function postLoad(EntityStorageInterface $storage, array &$entities);
- /**
- * Creates a duplicate of the entity.
- *
- * @return static
- * A clone of $this with all identifiers unset, so saving it inserts a new
- * entity into the storage system.
- */
- public function createDuplicate();
- /**
- * Gets the entity type definition.
- *
- * @return \Drupal\Core\Entity\EntityTypeInterface
- * The entity type definition.
- */
- public function getEntityType();
- /**
- * Gets a list of entities referenced by this entity.
- *
- * @return \Drupal\Core\Entity\EntityInterface[]
- * An array of entities.
- */
- public function referencedEntities();
- /**
- * Gets the original ID.
- *
- * @return int|string|null
- * The original ID, or NULL if no ID was set or for entity types that do not
- * support renames.
- */
- public function getOriginalId();
- /**
- * Returns the cache tags that should be used to invalidate caches.
- *
- * This will not return additional cache tags added through addCacheTags().
- *
- * @return string[]
- * Set of cache tags.
- *
- * @see \Drupal\Core\Cache\RefinableCacheableDependencyInterface::addCacheTags()
- * @see \Drupal\Core\Cache\CacheableDependencyInterface::getCacheTags()
- */
- public function getCacheTagsToInvalidate();
- /**
- * Sets the original ID.
- *
- * @param int|string|null $id
- * The new ID to set as original ID. If the entity supports renames, setting
- * NULL will prevent an update from being considered a rename.
- *
- * @return $this
- */
- public function setOriginalId($id);
- /**
- * Gets an array of all property values.
- *
- * @return mixed[]
- * An array of property values, keyed by property name.
- */
- public function toArray();
- /**
- * Gets a typed data object for this entity object.
- *
- * The returned typed data object wraps this entity and allows dealing with
- * entities based on the generic typed data API.
- *
- * @return \Drupal\Core\TypedData\ComplexDataInterface
- * The typed data object for this entity.
- *
- * @see \Drupal\Core\TypedData\TypedDataInterface
- */
- public function getTypedData();
- /**
- * Gets the key that is used to store configuration dependencies.
- *
- * @return string
- * The key to be used in configuration dependencies when storing
- * dependencies on entities of this type.
- *
- * @see \Drupal\Core\Entity\EntityTypeInterface::getConfigDependencyKey()
- */
- public function getConfigDependencyKey();
- /**
- * Gets the configuration dependency name.
- *
- * Configuration entities can depend on content and configuration entities.
- * They store an array of content and config dependency names in their
- * "dependencies" key.
- *
- * @return string
- * The configuration dependency name.
- *
- * @see \Drupal\Core\Config\Entity\ConfigDependencyManager
- */
- public function getConfigDependencyName();
- /**
- * Gets the configuration target identifier for the entity.
- *
- * Used to supply the correct format for storing a reference targeting this
- * entity in configuration.
- *
- * @return string
- * The configuration target identifier.
- */
- public function getConfigTarget();
- }
|