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

Метод last класса Envelope

Метод last класса Envelope возвращает последнюю метку указанного типа, добавленную в конверт. Первым параметром передаётся имя класса метки, например DelayStamp или HandledStamp. Если метка такого типа отсутствует, метод возвращает null. Конверт при этом не изменяется - возвращается лишь найденная метка.

Синтаксис

public function last(string $stampClass): ?StampInterface

Пример

Давайте создадим конверт с сообщением, добавим несколько меток задержки и получим последнюю из них:

<?php namespace AppMessage; class ArticleMessage { public function __construct( public string $title = 'article' ) { } } ?>
<?php namespace AppController; use AppMessageArticleMessage; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentMessengerEnvelope; use SymfonyComponentMessengerStampDelayStamp; class ArticleController extends AbstractController { public function index(): Response { $envelope = new Envelope(new ArticleMessage('hello')); $envelope = $envelope->with(new DelayStamp(1000)); $envelope = $envelope->with(new DelayStamp(5000)); $stamp = $envelope->last(DelayStamp::class); return new Response((string) $stamp->getDelay()); } } ?>

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

"5000"

Пример

Давайте проверим поведение метода, когда метка указанного типа в конверте отсутствует:

<?php namespace AppController; use AppMessageArticleMessage; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentMessengerEnvelope; use SymfonyComponentMessengerStampDelayStamp; class ArticleController extends AbstractController { public function index(): Response { $envelope = new Envelope(new ArticleMessage('article')); $stamp = $envelope->last(DelayStamp::class); return new Response(var_export($stamp, true)); } } ?>

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

"NULL"

Пример

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

<?php namespace AppController; use AppMessageArticleMessage; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentMessengerEnvelope; use SymfonyComponentMessengerStampHandledStamp; class ArticleController extends AbstractController { public function index(): Response { $envelope = new Envelope(new ArticleMessage('abcde')); $envelope = $envelope->with(new HandledStamp('first', 'handler_one')); $envelope = $envelope->with(new HandledStamp('second', 'handler_two')); $stamp = $envelope->last(HandledStamp::class); return new Response($stamp->getResult()); } } ?>

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

"second"

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

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