Метод getMessage класса Envelope
Метод getMessage класса Envelope возвращает
исходное сообщение, которое было обёрнуто в конверт.
Конверт Envelope хранит внутри себя сообщение
вместе со штампами (stamps), а метод getMessage
позволяет извлечь из него это сообщение. Параметров
метод не принимает.
Синтаксис
public function getMessage(): object
Пример
Давайте создадим конверт с сообщением и извлечём из него исходное сообщение:
<?php
use Symfony\Component\Messenger\Envelope;
class SendEmail
{
public function __construct(
public string $to,
public string $subject,
) {
}
}
$message = new SendEmail('user', 'hello');
$envelope = new Envelope($message);
$res = $envelope->getMessage();
echo $res->to;
echo $res->subject;
?>
Результат выполнения кода:
userhello
Пример
Давайте обернём сообщение в конверт и проверим,
что метод getMessage вернёт тот же самый объект:
<?php
use Symfony\Component\Messenger\Envelope;
class CreateArticle
{
public function __construct(
public string $title,
public string $text,
) {
}
}
$message = new CreateArticle('abcde', 'article');
$envelope = Envelope::wrap($message);
$res = $envelope->getMessage();
var_dump($res === $message);
?>
Результат выполнения кода:
true
Пример
Давайте добавим штамп к конверту и убедимся, что
метод getMessage по-прежнему возвращает
исходное сообщение:
<?php
use Symfony\Component\Messenger\Envelope;
use Symfony\Component\Messenger\Stamp\BusNameStamp;
class SendEmail
{
public function __construct(
public string $to,
) {
}
}
$message = new SendEmail('user');
$envelope = new Envelope($message);
$envelope = $envelope->with(new BusNameStamp('async'));
$res = $envelope->getMessage();
echo $res->to;
?>
Результат выполнения кода:
"user"
Смотрите также
-
класс
Envelope,
который оборачивает сообщение и хранит штампы -
метод
wrap,
который создаёт конверт из сообщения -
метод
dispatch,
который отправляет сообщение в шину -
класс
MessageBus,
который управляет отправкой сообщений