РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
751 of 1361 menu

Метод getSubscribedEvents класса EventSubscriber

Метод getSubscribedEvents объявляется внутри класса, реализующего интерфейс EventSubscriberInterface. Он возвращает массив, где ключами являются имена событий, а значениями - методы класса, которые нужно вызвать при возникновении этих событий. В значении можно указать метод строкой, массивом из метода и приоритета или массивом из нескольких таких массивов.

Метод вызывается автоматически диспетчером событий EventDispatcher при регистрации подписчика. Приоритет по умолчанию равен нулю: чем выше число, тем раньше будет вызван обработчик.

Синтаксис

public static function getSubscribedEvents(): array { return [ 'event.name' => 'onEventName', ]; }

Пример

Давайте создадим подписчик, который слушает событие 'article.created' и выводит сообщение:

<?php namespace AppEventSubscriber; use SymfonyComponentEventDispatcherEventSubscriberInterface; use SymfonyComponentEventDispatcherEvent; class ArticleSubscriber implements EventSubscriberInterface { public static function getSubscribedEvents(): array { return [ 'article.created' => 'onArticleCreated', ]; } public function onArticleCreated(Event $event): void { echo 'article created'; } } ?>

Результат выполнения кода при вызове события:

"article created"

Пример

Давайте укажем приоритет обработчика через массив:

<?php namespace AppEventSubscriber; use SymfonyComponentEventDispatcherEventSubscriberInterface; use SymfonyComponentEventDispatcherEvent; class ArticleSubscriber implements EventSubscriberInterface { public static function getSubscribedEvents(): array { return [ 'article.created' => ['onArticleCreated', 10], ]; } public function onArticleCreated(Event $event): void { echo 'article created'; } } ?>

Обработчик с приоритетом 10 будет вызван раньше обработчиков с меньшим приоритетом.

Пример

Давайте подпишем один класс на несколько событий:

<?php namespace AppEventSubscriber; use SymfonyComponentEventDispatcherEventSubscriberInterface; use SymfonyComponentEventDispatcherEvent; class ArticleSubscriber implements EventSubscriberInterface { public static function getSubscribedEvents(): array { return [ 'article.created' => 'onArticleCreated', 'article.updated' => 'onArticleUpdated', 'article.deleted' => [ ['onArticleDeleted', 20], ], ]; } public function onArticleCreated(Event $event): void { echo 'created'; } public function onArticleUpdated(Event $event): void { echo 'updated'; } public function onArticleDeleted(Event $event): void { echo 'deleted'; } } ?>

Результат выполнения кода при вызове события 'article.deleted':

"deleted"

Смотрите также

  • интерфейс EventSubscriber,
    который реализует класс подписчика
  • метод addSubscriber,
    который регистрирует подписчика в диспетчере
  • метод dispatch,
    который вызывает событие
  • метод addListener,
    который регистрирует отдельный обработчик
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить