Документация/Контроллеры/Middleware

Middleware

Middleware (контроллер-посредник) представляет собой разновидность контроллера, но его основное назначение — не вывод ожидаемого ответа пользователю (хотя middleware может возвращать текст ошибок), а выполнение определённых задач перед тем или после того, как этот ответ будет сформирован.

В отличие от контроллера, этот посредник может быть назначен не только к маршруту, но и к группе маршрутов. И там и там может быть несколько разных middleware (и даже одинаковых, если вдруг такое понадобится).

Например, авторизация пользователей может быть реализована в middleware и применена к группе маршрутов, где она необходима. Ещё до выполнения контроллера или иного основного действия, прикреплённого к маршруту, будет определён текущий пользователь и статус его авторизации.
В противном случае класс-посредник передаст выполнение другому контроллеру, вернет ошибку или перенаправит на иной маршрут, в зависимости от реализации.

Когда middleware() метод (варианты after() или before()) применяется в маршруте, он имеет аргумент data. Это еще одно отличие от контроллера, в этот аргумент можно передать массив, который затем будет доступен в middleware. Данные массива доступны в методе Hleb\Static\Router::data() или через контейнер.

Класс middleware должен быть унаследован от Hleb\Base\Middleware.


#Возвращаемые значения

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

string|int|float - эти типы будут преобразованы в строку и выведены в исходном виде как текст.

array - возвращаемый массив будет преобразован в JSON-строку. После этого дальнейшее выполнение прерывается.

bool - если возвращается false, то это равносильно прерыванию дальнейшего выполнения.


#Создание middleware

Кроме копирования демонстрационного файла DefaultMiddleware.php и его изменения, есть еще один простой способ создания нужного класса с использованием консольной команды.

$php console --add middleware ExampleMiddleware

Эта команда создаст новый шаблон /app/Middlewares/ExampleMiddleware.php.
Можно использовать другое подходящее название для класса.
Фреймворк HLEB2 позволяет также создать собственный шаблон по умолчанию для этой команды.

Модуль Модели

Страница создана: @fomiash
К началу страницы