Newer
Older
<?php
/**
* @file
* Contains \Drupal\Core\Entity\EntityInterface.
*/
namespace Drupal\Core\Entity;
use Drupal\Core\Access\AccessibleInterface;
Dries Buytaert
committed
/**
* Defines a common interface for all entity objects.
*/
interface EntityInterface extends AccessibleInterface {
/**
* Returns the entity UUID (Universally Unique Identifier).
*
* The UUID is guaranteed to be unique and can be used to identify an entity
* across multiple systems.
*
Jennifer Hodgdon
committed
* @return string|null
* The UUID of the entity, or NULL if the entity does not have one.
*/
public function uuid();
Angie Byron
committed
/**
* Returns the identifier.
*
* @return string|int|null
* The entity identifier, or NULL if the object does not yet have an
* identifier.
*/
public function id();
/**
* Returns the language of the entity.
*
* @return \Drupal\Core\Language\Language
* The language object.
*/
public function language();
/**
* Returns 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.
*
Jennifer Hodgdon
committed
* @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.
*
Alex Pott
committed
* @return self
*
* @see \Drupal\Core\Entity\EntityInterface::isNew()
*/
public function enforceIsNew($value = TRUE);
/**
Jennifer Hodgdon
committed
* Returns the ID of the type of the entity.
*
* @return string
* The entity type ID.
*/
public function getEntityTypeId();
/**
* Returns the bundle of the entity.
*
Jennifer Hodgdon
committed
* @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();
/**
* Returns the label of the entity.
*
Jennifer Hodgdon
committed
* @return string|null
* The label of the entity, or NULL if there is no label defined.
*/
public function label();
/**
* Returns the URI elements of the entity.
*
Alex Pott
committed
* URI templates might be set in the links array in an annotation, for
* example:
* @code
* links = {
Jennifer Hodgdon
committed
* "canonical" = "node.view",
* "edit-form" = "node.page_edit",
* "version-history" = "node.revision_overview"
Alex Pott
committed
* }
* @endcode
* or specified in a callback function set like:
* @code
Jennifer Hodgdon
committed
* uri_callback = "comment_uri",
Alex Pott
committed
* @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.
*
Angie Byron
committed
* @return \Drupal\Core\Url
*/
Alex Pott
committed
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
public function urlInfo($rel = 'canonical');
/**
* Returns 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.
*/
public function url($rel = 'canonical', $options = array());
/**
* Returns the internal path for this entity.
*
* self::url() will return the full path including any prefixes, fragments, or
* query strings. This path does not include those.
*
* @param string $rel
* The link relationship type, for example: canonical or edit-form.
*
* @return string
* The internal path for this entity.
*/
public function getSystemPath($rel = 'canonical');
/**
* 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);
Alex Pott
committed
/**
* Returns a list of URI relationships supported by this entity.
*
Jennifer Hodgdon
committed
* @return string[]
Alex Pott
committed
* An array of link relationships supported by this entity.
*/
public function uriRelationships();
/**
* Saves an entity permanently.
*
Angie Byron
committed
* When saving existing entities, the entity is assumed to be complete,
* partial updates of entities are not supported.
*
Jennifer Hodgdon
committed
* @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.
*
catch
committed
* @param \Drupal\Core\Entity\EntityStorageInterface $storage
* The entity storage object.
*/
catch
committed
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.
*
catch
committed
* @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.
*/
catch
committed
public function postSave(EntityStorageInterface $storage, $update = TRUE);
/**
* Changes the values of an entity before it is created.
*
* Load defaults for example.
*
catch
committed
* @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.
*/
catch
committed
public static function preCreate(EntityStorageInterface $storage, array &$values);
/**
* Acts on an entity after it is created but before hooks are invoked.
*
* @param \Drupal\Core\Entity\EntityStorageInterface $storage
catch
committed
* The entity storage object.
*/
catch
committed
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
catch
committed
* The entity storage object.
Jennifer Hodgdon
committed
* @param \Drupal\Core\Entity\EntityInterface[] $entities
* An array of entities.
*/
catch
committed
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
catch
committed
* The entity storage object.
Jennifer Hodgdon
committed
* @param \Drupal\Core\Entity\EntityInterface[] $entities
* An array of entities.
*/
catch
committed
public static function postDelete(EntityStorageInterface $storage, array $entities);
/**
Alex Pott
committed
* Acts on loaded entities.
*
* @param \Drupal\Core\Entity\EntityStorageInterface $storage
catch
committed
* The entity storage object.
Jennifer Hodgdon
committed
* @param \Drupal\Core\Entity\EntityInterface[] $entities
* An array of entities.
*/
catch
committed
public static function postLoad(EntityStorageInterface $storage, array &$entities);
/**
* Creates a duplicate of the entity.
*
Jennifer Hodgdon
committed
* @return static
* A clone of $this with all identifiers unset, so saving it inserts a new
* entity into the storage system.
*/
public function createDuplicate();
/**
* Returns the entity type definition.
*
Alex Pott
committed
* @return \Drupal\Core\Entity\EntityTypeInterface
* The entity type definition.
*/
public function getEntityType();
/**
* Returns a list of entities referenced by this entity.
*
Jennifer Hodgdon
committed
* @return \Drupal\Core\Entity\EntityInterface[]
* An array of entities.
*/
public function referencedEntities();
Angie Byron
committed
/**
* Returns 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.
Angie Byron
committed
*/
public function getOriginalId();
/**
* 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);
/**
* Returns an array of all property values.
*
* @return mixed[]
* An array of property values, keyed by property name.
*/
public function toArray();