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

Класс SerializerStamp

Класс SerializerStamp добавляется в Envelope сообщения и хранит массив контекста сериализации. Этот контекст передаётся сериализатору при отправке сообщения в транспорт и при его получении из очереди. Первым параметром конструктор принимает массив context с настройками сериализатора.

Синтаксис

new SerializerStamp(array $context = [])

Пример

Давайте создадим сообщение и добавим в конверт штамп сериализации:

<?php namespace App\Message; class ArticleMessage { public function __construct( public string $title = 'article', ) { } } ?>

Теперь отправим это сообщение в шину с нужным контекстом:

<?php namespace App\Controller; use App\Message\ArticleMessage; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Messenger\Envelope; use Symfony\Component\Messenger\MessageBusInterface; use Symfony\Component\Messenger\Stamp\SerializerStamp; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/', name: 'article_index')] public function index(MessageBusInterface $bus): Response { $message = new ArticleMessage('abcde'); $envelope = new Envelope($message); $envelope = $envelope->with(new SerializerStamp([ 'groups' => ['article:write'], ])); $bus->dispatch($envelope); return new Response('hello'); } } ?>

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

hello

Пример

Давайте получим штамп из конверта после отправки:

<?php namespace App\Controller; use App\Message\ArticleMessage; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Messenger\Envelope; use Symfony\Component\Messenger\Stamp\SerializerStamp; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/', name: 'article_index')] public function index(): Response { $message = new ArticleMessage('abcde'); $envelope = new Envelope($message); $envelope = $envelope->with(new SerializerStamp([ 'groups' => ['article:write'], ])); $stamp = $envelope->last(SerializerStamp::class); $res = $stamp->getContext(); return new Response(json_encode($res)); } } ?>

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

{"groups":["article:write"]}

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

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