Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

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

Форум для авторов расширений для phpBB. Здесь можно попросить помощи в разработке у коллег.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16313
Стаж: 17 лет 10 месяцев
Откуда: Красноярск
Благодарил (а): 533 раза
Поблагодарили: 2119 раз
Контактная информация:

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

Сообщение 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.
Изображение
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16313
Стаж: 17 лет 10 месяцев
Откуда: Красноярск
Благодарил (а): 533 раза
Поблагодарили: 2119 раз
Контактная информация:

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

Сообщение rxu »

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

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

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

Вернуться в «Для разработчиков»