Документация InstantCMS

для администраторов и разработчиков

Инструменты пользователя

Инструменты сайта


dev:models:overview

Введение

Модель – это вспомогательный класс, используемый компонентом для записи и чтения данных из базы. С помощью модели можно автоматизировать наиболее частые операции с данными:

  • добавление,
  • чтение,
  • изменение,
  • удаление,
  • фильтрацию.

Модель позволяет обойтись без написания «голых» SQL-запросов для обращения к базе данных. Вместо этого она предоставляет интерфейс (набор методов), позволяющих работать с записями в базе как с обычными ассоциативными массивами.

Термин «запись» здесь и далее обозначает, грубо говоря, одну строку в какой-либо таблице в базе. Либо, когда речь идет о чтении – одну строку из результатов запроса.

InstantCMS не использует ORM, поэтому сам термин «модель» здесь имеет несколько отличное от общепринятого значение. Модель в InstantCMS не является объектным представлением одной записи. Здесь модель – всего лишь объект, содержащий набор методов для работы с базой. То есть одна модель в InstantCMS может работать с любыми записями. Однако, есть и общие черты с ORM. Например, автоматическая фильтрация входящих данных.

Модель добавляет уровень абстракции между бизнес-логикой (контроллером) и хранилищем данных (базой). Теоретически, это может позволить изменить хранилище (например, использовать PostgreSQL вместо MySQL) без необходимости внесения правок в код контроллеров.

Модель и компоненты

Каждая модель является логической частью какого-либо компонента. Модель не может существовать без компонента. Однако, компонент может содержать только модель.

Модель берет на себя всю работу по извлечению и изменению данных. Другие части компонента (контроллеры, шаблоны) не должны содержать никакой логики связанной с получением или хранением данных в базе. Они могут только запрашивать нужные данные у модели или наоборот, передавать ей новые данные для сохранения.

Использование модели внутри компонента подробно описано в соответствующем разделе.

Класс модели

Путь к файлу модели формируется по схеме: /system/controllers/{компонент}/model.php. Например, модель компонента «Комментарии» находится в файле /system/controllers/comments/model.php.

Внутри файла определяется класс модели, название которого образуется как model{Компонент}, например modelComments. Сам класс наследуется от системного класса cmsModel:

class modelExample extends cmsModel {}

Или вы можете унаследовать свою модель от другой существующей модели

class modelExample extends modelContent {}

Начиная с версии InstantCMS 2.14.2 можно создавать модели для бэкендов. Путь к файлу модели формируется по схеме: /system/controllers/{компонент}/backend/model.php. Например, бэкенд модель компонента «Контент» находится в файле /system/controllers/content/backend/model.php.

Модель бэкенда обычно, но не обязательно, наследуют от основной модели, расширяя её:

class modelBackendExample extends modelExample {}

Как использовать объект этого класса описано здесь.


К оглавлению раздела "Модели"


К оглавлению документации для разработчиков

dev/models/overview.txt · Последнее изменение: 08.04.2021 12:43 — fuze