Оглавление
Laminas
Наследник Zend Framework: модули, диспетчер сервисов, формы и работа с базой для корпоративных проектов.
1.Начало работы
- Знакомство с LaminasЧто такое Laminas, откуда он появился, из каких пакетов состоит и как в нём проходит запрос.
- УстановкаКак создать проект Laminas из готовой заготовки, ответить на вопросы установщика и открыть первую страницу.
- Структура проектаКакие папки и файлы есть в проекте Laminas, что лежит в каждой и с какого файла начинается обработка запроса.
- МодулиЧто такое модуль Laminas и как создать модуль Blog вручную: класс Module, файл настроек, загрузка классов и подключение.
- Настройки и окруженияГде лежат настройки Laminas, как файлы global.php и local.php сливаются в один массив и что меняет режим разработки.
2.Страницы
- МаршрутыКак связать адрес страницы с контроллером: раздел router в настройках модуля, маршруты Literal и Segment, параметры и ограничения.
- Вложенные маршрутыКак собрать маршруты одного раздела в дерево: child_routes, may_terminate и составные имена маршрутов.
- Контроллеры и действияКак создать контроллер Laminas, где он лежит, как назвать действие и зачем регистрировать контроллер в настройках.
- ШаблоныГде лежат шаблоны Laminas, как по имени действия находится файл phtml, как передать в него данные через ViewModel и безопасно их вывести.
- МакетЧто такое макет в Laminas, где лежит layout.phtml, как в него попадает страница и как сменить или отключить макет для одного действия.
- Помощники шаблоновВстроенные помощники шаблонов Laminas: url для ссылок, basePath для файлов из public и partial для повторяющихся кусков разметки.
- Данные запросаКак в контроллере Laminas прочитать параметры маршрута, строку запроса и данные формы: помощник params и объект запроса.
- ОтветЧто может вернуть действие Laminas кроме страницы: перенаправление, ошибка 404, свой код состояния и данные в формате JSON.
3.Сервисы и база данных
- Диспетчер сервисовЧто такое сервис и фабрика в Laminas, как зарегистрировать сервис в разделе service_manager и передать его в контроллер через конструктор.
- Автоматические фабрикиКак не писать фабрику для каждого класса: ReflectionBasedAbstractFactory и ConfigAbstractFactory в Laminas и когда какую выбрать.
- Подключение к базе данныхКак установить laminas-db, записать параметры подключения в настройки, создать таблицу статей и выполнить первый запрос.
- TableGateway и класс моделиКак читать и сохранять строки таблицы в Laminas: класс записи Post, шлюз TableGateway, класс PostTable с фабрикой и вызов из контроллера.
- Построитель запросов SqlКак собирать запросы в Laminas без склейки строк: объект Select, условия where, сортировка, соединение таблиц, подсчёт и транзакции.
4.Формы и пользователи
- ФормыКак описать форму Laminas классом, вывести её помощниками шаблона и обработать отправленные данные в контроллере.
- Проверка данныхКак добавить форме Laminas правила: фильтры и валидаторы в getInputFilterSpecification, свои тексты ошибок и проверка данных без формы.
- СессииКак хранить данные посетителя между запросами в Laminas: пакет laminas-session, объект Container, настройки сессии и защита форм токеном Csrf.
- Сообщения после действияКак показать посетителю сообщение после перенаправления: помощник flashMessenger в контроллере и вывод сообщений в макете Laminas.
- Загрузка файловКак добавить в форму Laminas поле для файла, проверить размер и расширение, сохранить файл в public/uploads и показать его на странице.
- Вход пользователейАутентификация в Laminas: пакет laminas-authentication, свой адаптер с проверкой пароля, сервис AuthenticationService, вход, выход и текущий пользователь.
- Права доступаКак закрыть страницы Laminas от гостей слушателем события маршрута и как описать роли и разрешения с помощью laminas-permissions-acl.
5.Развитие проекта
- СобытияКак устроена обработка запроса в Laminas: события MvcEvent, слушатели в Module::onBootstrap, приоритеты и собственные события сервисов.
- Помощники контроллераЧто такое помощник контроллера (controller plugin) в Laminas, как написать свой, зарегистрировать его в controller_plugins и вызвать в действии.
- Свои помощники шаблоновКак написать собственный помощник шаблона Laminas, зарегистрировать его в разделе view_helpers и вызывать в файлах phtml.
- Постраничный выводКак разбить список статей на страницы в Laminas: пакет laminas-paginator, адаптер для запроса к базе и вывод ссылок помощником paginationControl.
- REST APIКак отдавать данные блога в формате JSON: контроллер AbstractRestfulController, его методы, маршрут API и проверка запросов через curl.
- Консольные командыКак написать свою консольную команду для приложения Laminas с пакетом laminas-cli: класс команды, регистрация в настройках и запуск.
- КешированиеКак сохранять результаты медленных операций в Laminas: пакет laminas-cache, раздел caches в настройках и методы getItem, setItem, removeItem.
- ЖурналКак записывать события и ошибки приложения Laminas в файл: журнал PSR-3 на Monolog, фабрика, уровни сообщений и запись исключений.
- ТестированиеКак проверять страницы приложения Laminas автоматически: пакет laminas-test, класс AbstractHttpControllerTestCase, проверки ответа и подмена сервисов.
- Размещение на сервереКак подготовить приложение Laminas к работе на сервере: рабочий режим, кеш настроек, настройка веб-сервера и порядок обновления.