Знакомство с 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 |
Как проходит запрос
- Браузер запрашивает адрес, например
/blog. - Маршрутизатор находит в настройках маршрут для этого адреса.
- Маршрут называет контроллер и действие — метод контроллера.
- Действие готовит данные и возвращает их.
- Шаблон превращает данные в 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.