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

Атрибут AsMessageHandler

Атрибут AsMessageHandler вешается на класс и регистрирует его как обработчик сообщений. Первым параметром передаётся имя шины, которая будет вызывать этот обработчик. Вторым параметром можно указать имя метода, который обрабатывает сообщение.

Синтаксис

#[AsMessageHandler(bus: bus, method: method, priority: priority, handles: handles, fromTransport: fromTransport)]

Пример

Давайте создадим сообщение и обработчик для него:

<?php namespace AppMessage; class ArticleMessage { public function __construct( public string $text ) { } } ?>

Теперь повесим атрибут AsMessageHandler на класс обработчика:

<?php namespace AppMessageHandler; use AppMessageArticleMessage; use SymfonyComponentMessengerAttributeAsMessageHandler; #[AsMessageHandler] class ArticleMessageHandler { public function __invoke(ArticleMessage $message): void { echo $message->text; } } ?>

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

"hello"

Пример

Давайте укажем имя шины через параметр bus:

<?php namespace AppMessageHandler; use AppMessageArticleMessage; use SymfonyComponentMessengerAttributeAsMessageHandler; #[AsMessageHandler(bus: 'article.bus')] class ArticleMessageHandler { public function __invoke(ArticleMessage $message): void { echo $message->text; } } ?>

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

"article"

Пример

Давайте укажем имя метода через параметр method:

<?php namespace AppMessageHandler; use AppMessageArticleMessage; use SymfonyComponentMessengerAttributeAsMessageHandler; #[AsMessageHandler(method: 'handle')] class ArticleMessageHandler { public function handle(ArticleMessage $message): void { echo $message->text; } } ?>

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

"abcde"

Пример

Давайте зададим приоритет через параметр priority:

<?php namespace AppMessageHandler; use AppMessageArticleMessage; use SymfonyComponentMessengerAttributeAsMessageHandler; #[AsMessageHandler(priority: 10)] class ArticleMessageHandler { public function __invoke(ArticleMessage $message): void { echo $message->text; } } ?>

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

"user"

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

  • класс MessageBus,
    который отправляет сообщения в шину
  • метод dispatch,
    который отправляет сообщение в шину
  • параметр bus,
    который задаёт имя шины обработчика
  • параметр method,
    который задаёт имя метода обработчика
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить