Страница 1 из 1

Приоритет вызова слушателей событиями ядра

Добавлено: 07.12.2014 9:54
rxu
В случае, если на одно и то же событие ядра подписано несколько слушателей, Symfony позволяет установить приоритет их вызова.
Например, следующие слушатели используют одно и то же событие ядра:

Код: Выделить всё

'core.viewtopic_get_post_data'			=> 'viewtopic_handle_thanks',

Код: Выделить всё

'core.viewtopic_get_post_data'		=> 'modify_viewtopic_post_list',
Проблема решается следующим образом:

Код: Выделить всё

			'core.viewtopic_get_post_data'			=> array('viewtopic_handle_thanks', -2),
В результате данный слушатель будет вызван позже.
Чем больше числовое значение элемента массива, тем выше его приоритет, и тем раньше будет вызван слушатель.
По умолчанию для всех событий используется 0.

Источник: Using Event Subscribers - Symfony.com.

Re: Приоритет вызова слушателей событиями ядра

Добавлено: 20.05.2017 15:13
rxu
В качестве бонуса.
Стандартный вызов функции слушателя выглядит как
myfunction() или myfunction($event).

Если добавить к вызову второй параметр - это будет имя события, вызвавшего слушатель: myfunction($event, $eventName).
Т.е. в $eventName будет записана строка - имя события, например, core.user_setup.

Это может быть полезно в случаях, когда одна и та же функция слушает несколько событий, и необходимо дифференцировать ее поведение в зависимости от вызвавшего ее события.