Сущности

Сущность (англ. Entity) — это легковесный доменный объект который имеет хранилище данных. Один PHP объект сущности представляет конкретную единицу данных. В качестве хранилища данных может использоваться как БД, так и файлы, а разработчики могут описывать новые типы хранилищ и источники данных.

У сущностей, как правило, есть свои репозитории (англ. respository). Репозиторий — это постоянный функционал, который позволяет управлять сущностями конкретного типа. Он позволяет загружать, сохранять, удалять и искать сущности в их непосредственном хранилище.

Сущности в Drupal

Сущности в Drupal используются для хранения данных. В качестве примера можно привести следующие сущности:

  • node (Node) — также известна как «Тип материала». Предоставляется одноимённым модулем node. Это основная сущность в Drupal, которая, в установочных профилях отличных от минимального, включена по умолчанию. Она используется для создания содержимого на сайте: Страницы, Публикации, Новости, Отзывы и т.д. Это основная сущность для хранения и работы с содержимым из коробки.
  • user (User) — сущность «Пользователь» предоставляет хранилище данных для пользователей сайта. Как правило хранит, имя пользователя, логин, пароль, email и т.д.
  • file (File) — сущность «File», это пример очень минимальной и легковесной сущности. Данная сущность хранит информацию о физических файлах загруженных в друпал, и используется для обращения и работы с ними. По умолчанию, для данной сущности не предоставляется никакого интерфейса.

А также множество других сущностей с различными назначениями и возможностями.

Типы сущностей в Drupal

Сущности в Drupal базируются на Plugin API. Их можно разделить на два основных подтипа:

  • Контент сущность (ContentEntityType): Сущности, которые хранят свои данные в базе данных. Отлично подходят для хранения больших объёмов данных. Каждая сущность имеет свою выделенную таблицу.
  • Конфигурационная сущность (ConfigEntityType): Конфигурационные сущности используются для хранения небольшого объема данных. Они хранятся в YAML файлах и больше известны как «конфиги». Конфигурационные сущности можно деплоить, синхронизировать и они отслеживаются в системе контроля версий.

Это лишь две основные и готовые абстрактные реализации поставляемые ядром. Они должны покрывать 99% потребностей. Для оставшегося 1% и очень нетипичных кейсов, существует более низкоуровневая абстракция, которую и расширяют описанные два — EntityType.

Вы можете описать совершенно новый подтип сущности, унаследовавшись от EntityType. В таком случае, вам придётся полностью брать всё под свой контроль. В данном случае Drupal не выдвигает фактически никаких требований, и вы вольны делать что угодно. Где будут храниться данные — решать вам. Это отличная точка старта, если вы хотите что-то очень уникальное не вписывающееся в предоставленные готовые абстракции, и\или вы хотите хранить данные не в БД\YAML. Например, такие сущности могут выступать в качестве прокси для API.

См. также

  • Plugin API — сущности, это пример очень гибкой реализации плагинов.

Ссылки

Помощь и обратная связь

Если вы обнаружили ошибку или хотите внести улучшения, и желаете внести изменения самостоятельно при помощи Pull Request
Если вы желаете предложить улучшение для этого документа

Обратиться за помощью

Если вы не нашли то что искали, воспользуйтесь поиском.

Если вам нужна помощь с чем-то конкретным, обратитесь к сообществу.