Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. EntityInterface.php

interface EntityInterface

Defines a common interface for all entity objects.

Hierarchy

  • interface \Drupal\Core\Access\AccessibleInterface; interface \Drupal\Core\Cache\CacheableDependencyInterface; interface \Drupal\Core\Cache\RefinableCacheableDependencyInterface extends \Drupal\Core\Cache\CacheableDependencyInterface
    • interface \Drupal\Core\Entity\EntityInterface extends \Drupal\Core\Access\AccessibleInterface \Drupal\Core\Cache\CacheableDependencyInterface \Drupal\Core\Cache\RefinableCacheableDependencyInterface

Expanded class hierarchy of EntityInterface

All classes that implement EntityInterface

Related topics

Entity API
Describes how to define and manipulate content and configuration entities.
216 files declare their use of EntityInterface
AuthorFormatter.php in core/modules/user/src/Plugin/Field/FieldFormatter/AuthorFormatter.php
BaseFieldOverrideAccessControlHandler.php in core/lib/Drupal/Core/Field/BaseFieldOverrideAccessControlHandler.php
BlockAccessControlHandler.php in core/modules/block/src/BlockAccessControlHandler.php
BlockContentAccessControlHandler.php in core/modules/block_content/src/BlockContentAccessControlHandler.php
BlockContentHooks.php in core/modules/block_content/src/Hook/BlockContentHooks.php

... See full list

File

core/lib/Drupal/Core/Entity/EntityInterface.php, line 14

Namespace

Drupal\Core\Entity
View source
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|\Drupal\Core\StringTranslation\TranslatableMarkup|null
     *   The label of the entity, or NULL if there is no label defined.
     */
    public function label();
    
    /**
     * 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. If none
     *   is provided, canonical is assumed, or edit-form if no canonical link
     *   exists.
     * @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 = NULL, array $options = []);
    
    /**
     * Generates the HTML for a link to this entity.
     *
     * @param string|null|array|\Drupal\Component\Render\MarkupInterface $text
     *   (optional) The link text for the anchor tag as a translated string or
     *   render array. 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|null
     *   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();

}

Members

Title Sort descending Modifiers Object type Summary Overrides
AccessibleInterface::access public function Checks data value access. 9
CacheableDependencyInterface::getCacheContexts public function The cache contexts associated with this object. 30
CacheableDependencyInterface::getCacheMaxAge public function The maximum age for which this object may be cached. 30
CacheableDependencyInterface::getCacheTags public function The cache tags associated with this object. 23
EntityInterface::bundle public function Gets the bundle of the entity. 2
EntityInterface::create public static function Constructs a new entity object, without permanently saving it. 2
EntityInterface::createDuplicate public function Creates a duplicate of the entity. 2
EntityInterface::delete public function Deletes an entity permanently. 2
EntityInterface::enforceIsNew public function Enforces an entity to be new. 2
EntityInterface::getCacheTagsToInvalidate public function Returns the cache tags that should be used to invalidate caches. 2
EntityInterface::getConfigDependencyKey public function Gets the key that is used to store configuration dependencies. 2
EntityInterface::getConfigDependencyName public function Gets the configuration dependency name. 2
EntityInterface::getConfigTarget public function Gets the configuration target identifier for the entity. 2
EntityInterface::getEntityType public function Gets the entity type definition. 2
EntityInterface::getEntityTypeId public function Gets the ID of the type of the entity. 2
EntityInterface::getOriginalId public function Gets the original ID. 2
EntityInterface::getTypedData public function Gets a typed data object for this entity object. 2
EntityInterface::hasLinkTemplate public function Indicates if a link template exists for a given key. 2
EntityInterface::id public function Gets the identifier. 2
EntityInterface::isNew public function Determines whether the entity is new. 2
EntityInterface::label public function Gets the label of the entity. 2
EntityInterface::language public function Gets the language of the entity. 2
EntityInterface::load public static function Loads an entity. 2
EntityInterface::loadMultiple public static function Loads one or more entities. 2
EntityInterface::postCreate public function Acts on a created entity before hooks are invoked. 2
EntityInterface::postDelete public static function Acts on deleted entities before the delete hook is invoked. 2
EntityInterface::postLoad public static function Acts on loaded entities. 2
EntityInterface::postSave public function Acts on a saved entity before the insert or update hook is invoked. 2
EntityInterface::preCreate public static function Changes the values of an entity before it is created. 2
EntityInterface::preDelete public static function Acts on entities before they are deleted and before hooks are invoked. 2
EntityInterface::preSave public function Acts on an entity before the presave hook is invoked. 2
EntityInterface::referencedEntities public function Gets a list of entities referenced by this entity. 2
EntityInterface::save public function Saves an entity permanently. 2
EntityInterface::setOriginalId public function Sets the original ID. 2
EntityInterface::toArray public function Gets an array of all property values. 3
EntityInterface::toLink public function Generates the HTML for a link to this entity. 2
EntityInterface::toUrl public function Gets the URL object for the entity. 2
EntityInterface::uriRelationships public function Gets a list of URI relationships supported by this entity. 2
EntityInterface::uuid public function Gets the entity UUID (Universally Unique Identifier). 2
RefinableCacheableDependencyInterface::addCacheableDependency public function Adds a dependency on an object: merges its cacheability metadata. 1
RefinableCacheableDependencyInterface::addCacheContexts public function Adds cache contexts. 1
RefinableCacheableDependencyInterface::addCacheTags public function Adds cache tags. 1
RefinableCacheableDependencyInterface::mergeCacheMaxAge public function Merges the maximum age (in seconds) with the existing maximum age. 1
RSS feed
Powered by Drupal