Сущности

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

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

Сущности в Drupal

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

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

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

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

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

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

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

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

См. также

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

Ссылки

🌱 Помогите нам сделать документацию лучше!

Вся документация Druki с отрытым исходным кодом. Нашли ошибку или неточность? Создайте pull request.

Редактировать текущий документ Обсудить улучшение

Или узнайте как контрибутить.

🤔 По-прежнему нужна помощь?

Не нашли ответа на свой вопрос? Попросите помощи у сообщества!

Задайте вопрос на GitHub Смотрите другие ресурсы сообщества