Содержание
В этой серии видео мы с вами остановимся на вопросах работы с событиями (events) на фреймворке Symfony. Что такое события, какие они бывают и, главное, как мы можем привязаться к этим событиям и в этот момент что-то делать и совершать какие-то действия.
Symfony события
Давайте начнем с событий. Когда мы разрабатываем какое-то Symfony приложение, мы понимаем, что это приложение будет работать у нас по протоколу HTTP. Это означает, что мы отправляем приложению запрос и получаем от него какой-то ответ. Принцип клиент-серверной архитектуры.
Нужно понимать, что начиная от момента получения запроса, до отдачи response (ответа) происходит ряд различных действий. Каждое действие является неким событием.
В Symfony есть возможность в момент выполнения программы, привязаться к каким-то событиям и делать какие-то действия в момент наступления этих событий.
События, к которым мы можем привязаться и делать какие-то действия, можно разделить на 2 типа:
- события ядра (core events)
- пользовательские события (custom events).
События ядра (core events)
это встроенные в Symfony события, к которым мы можем привязаться. Они установлены по умолчанию и мы можем их использовать.
Пользовательские события (custom symfony events).
Такие события мы можем создавать сами и в дальнейшем к ним привязываться. Также эти события могут создавать какие-то бандлы или библиотеки, которые используются в нашем проекте.
В момент выполнения какого-то события, мы можем его отловить и сделать какие-то действия. Это значительно упрощает настройку нашего приложения и позволяет более гибко управлять теми данными, которое это приложение будет получать или отдавать в ответе.
Несколько примеров применения слушателей событий, которые мы можем использовать.
Мы можем делать какие-то действия при каждом запросе к нашему сайту. Можно проверять выставлен ли язык сайта из сессии или из кук, если это установлено, мы выбираем язык для пользователя.
Можно заблокировать пользователя с какими-то характеристиками. Можно заблокировать запросы со всех браузеров, кроме одного.
Защита от злоумышленников. Они могут сделать копию вашего сайта на других доменах. С помощью слушателя событий можно легко заблокировать такие запросы.
Это действия, которые мы можем выполнять при каком-то запросе, также можно выполнять действия при ответе. Мы можем прописывать эту логику в контроллерах, но представьте, что у нас огромный проект и в каждом контроллере прописать все эти однотипные действия сложная задача. Здесь это можно сделать более гибко.
Для запросов на ответ. Например, мы хотим добавить какой-то HTTP-заголовок для всех или определенных запросов, которые будут поступать к нашему проекту. Слушатели событий (event listeners) позволяют это легко сделать.
Часто слушатели событий применяются при изменении данных или структуры данных в базе данных.
Например, что-то добавилось в сущность в базе данных или изменилось и мы можем в этот момент что-то сделать. Можно модифицировать эти данные. Отправить пользователю email. Либо можем присоединить какие-то дополнительные данные к тем, которые мы получаем.
Часто используется при взаимодействии с API Platform в Symfony. Там часто не хватает каких-то данных или нужно присоединить какие-то данные.
С событиями мы можем работать 2 способами:
- слушателями событий (Event listeners)
- подписчиками на события (Event subscriber)
Смысл работы с этими 2 инструментами одинаковый. Мы ловим какое-то событие и в момент его наступления, выполняем какие-то действия. Есть только отличия по технике.
Это основное, что хотелось рассказать в вводной части по поводу событий и слушателей событий в Symfony.
Далее давайте приступим к практике и посмотрим на реальном примере, как мы можем эти события получить и выполнять какие-то действия в момент их наступления.
Чтобы оставить сообщение, зарегистрируйтесь/войдите на сайт через:
Email - зарегистрироваться / войти