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

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

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

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


dev:overview

Введение

InstantCMS является модульной системой, построенной с использованием MVC-архитектуры.

Модульные блоки, из которых собирается функционал сайта, в InstantCMS называются Компонентами.

В свою очередь, каждый компонент состоит из трех основных частей: контроллера, модели и шаблонов. Компонент может содержать как все эти части одновременно, так и любое их сочетание по-отдельности.

Автоматическая загрузка классов

InstantCMS автоматически загружает классы из директорий:

  • system/core/ - имя класса должно начинаться на cms. Например, класс cmsAction, его файл system/core/action.php. Это системные классы.
  • system/fields/ - имя класса должно начинаться на field. Например, класс fieldDate, его файл system/fields/date.php. Это классы полей форм.
  • system/controllers/NAME/model.php - имя класса должно начинаться на model. Например, класс modelUsers, его файл system/controllers/users/model.php. Это классы моделей контроллеров.

Также поддерживаются загрузки классов по пространствам имён.

namespace должен начинаться на icms\ а дальше полный путь к файлу относительно директории system. Например:

use icms\traits\controllers\actions\listgrid;

Подключит файл system/traits/controllers/actions/listgrid.php

В InstantCMS есть класс, управляющий автозагрузкой классов - cmsAutoloader (>= 2.17.0). Он имеет публичный метод:

cmsAutoloader::register(string $namespace, string $directory) : void
 
// Пример подключения
// Первым параметром передаём базовое пространство имён библиотеки
// Вторым параметром относительный путь от корня установки InstantCMS
cmsAutoloader::register('PHPMailer\PHPMailer', 'system/libs/phpmailer/');

С его помощью вы можете добавлять библиотеки в очередь автозагрузки. Как правило, это будут сторонние библиотеки со своими пространствами имён.

Есть предустановленная конфигурация для некоторых сторонних классов, использующихся в InstantCMS. Она находится по пути /system/config/autoload.php. Не забывайте, что директория /system/config/ может быть переопределена.

InstantCMS поддерживает Composer. Предполагается, что пакеты Composer устанавливаются из корневой директории установки InstantCMS, движок ищет файл автозагрузчика Composer в /vendor/autoload.php.

Контроллеры

Контроллер - основная часть компонента, в которой находится вся бизнес-логика. Задача контроллера - получить запрос от пользователя, обработать его и вернуть результат (например, HTML-страницу или JSON).

Каждый компонент может иметь 2 контроллера - frontend и backend, которые работают в пользовательской и административной части сайта соответственно.

Модели

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

Шаблоны

Шаблоны служат для форматирования данных перед выводом их пользователю. Шаблон содержит в себе HTML-разметку и минимум программного кода - только в том объеме, который необходим для форматирования вывода. Данные в шаблон передаются контроллером.

Схема работы

Каждый запрос пользователя (открытие страницы в браузере) запускает следующий рабочий процесс:

  1. Запускается файл index.php;
  2. Роутер определяет какой компонент был запрошен и запускает его контроллер;
  3. Контроллер получает параметры запроса из URL, либо из формы заполненной пользователем;
  4. Контроллер получает (или сохраняет) данные через модель;
  5. Контроллер обрабатывает данные необходимым образом;
  6. Контроллер вызывает шаблон и передает в него полученные (или обработанные) данные;
  7. Шаблон формирует конечную HTML-страницу, которая возвращается пользователю.

Таким образом, основная логика (большая часть кода) находится в контроллере.

В следующих разделах документации мы разберем более детально устройство контроллеров, моделей и шаблонов.


К оглавлению

dev/overview.txt · Последнее изменение: 26.11.2024 23:37 — fuze

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki