Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Знакомство с Laminas

Laminas — это набор PHP-пакетов для создания сайтов и продолжение Zend Framework, одного из самых известных фреймворков для корпоративных проектов. В 2020 году Zend Framework передали фонду Linux Foundation и переименовали в Laminas; код остался тем же, изменились только имена классов.

Курс описывает приложение на laminas-mvc версии 3 и PHP 8.1 или новее.

Чем Laminas отличается

В Laminas почти ничего не происходит «само». Адрес страницы, класс контроллера, способ его создания — всё записывают в файлах настроек, обычных PHP-файлах, которые возвращают массив. Кода получается больше, чем в Laravel, зато всегда видно, откуда что берётся.

Вот как выглядит фрагмент такого файла:

// module/Application/config/module.config.php
return [
    'view_manager' => [
        'doctype' => 'HTML5',
    ],
];

Ключ view_manager — раздел настроек шаблонов, doctype — одна настройка в нём. С такими массивами вы будете работать в каждом уроке.

Что такое MVC

MVC — способ разделить код на три части:

ЧастьЧто делаетГде лежит
Модель (Model)Работает с данными и базойmodule/Blog/src/Model
Шаблон (View)Собирает HTML страницыmodule/Blog/view
Контроллер (Controller)Принимает запрос и связывает первые две частиmodule/Blog/src/Controller

Как проходит запрос

  1. Браузер запрашивает адрес, например /blog.
  2. Маршрутизатор находит в настройках маршрут для этого адреса.
  3. Маршрут называет контроллер и действие — метод контроллера.
  4. Действие готовит данные и возвращает их.
  5. Шаблон превращает данные в HTML, а макет добавляет общую рамку страницы.

Пакеты Laminas

Laminas состоит из отдельных пакетов. Каждый ставят через Composer, когда он понадобится:

ПакетДля чего
laminas-mvcМаршруты, контроллеры, шаблоны
laminas-servicemanagerСоздание объектов приложения
laminas-dbРабота с базой данных
laminas-form, laminas-inputfilterФормы и проверка данных
laminas-authenticationВход пользователей
laminas-eventmanagerСобытия

Что получится в курсе

На протяжении курса вы соберёте блог: список статей, страницу статьи, форму добавления, вход для автора и небольшой API. Каждый урок добавляет к нему одну деталь.

Частая ошибка

В старых статьях и ответах на форумах встречаются имена классов, начинающиеся с Zend\. Такой код не заработает в новом проекте: во всех именах Zend нужно заменить на Laminas, например Zend\Mvc\Controller\AbstractActionController на Laminas\Mvc\Controller\AbstractActionController.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.