Метод getSubject класса GenericEvent
Метод getSubject класса GenericEvent возвращает
субъект события. Субъект - это объект, над которым
совершается действие, например сущность статьи или
пользователя. Субъект передаётся первым параметром
в конструктор GenericEvent. Если субъект не был
передан, метод вернёт null.
Синтаксис
public function getSubject(): mixed
Пример
Давайте создадим событие с субъектом и получим его через метод getSubject:
<?php
namespace AppEvent;
use SymfonyContractsEventDispatcherEvent;
use SymfonyComponentEventDispatcherGenericEvent;
class ArticleEvent
{
public function __invoke(GenericEvent $event): void
{
$subject = $event->getSubject();
echo $subject->title;
}
}
?>
Пример
Давайте передадим субъект в конструктор и проверим его наличие:
<?php
namespace AppService;
use AppEntityArticle;
use SymfonyComponentEventDispatcherEventDispatcherInterface;
use SymfonyComponentEventDispatcherGenericEvent;
class ArticleService
{
public function __construct(
private EventDispatcherInterface $dispatcher
) {
}
public function publish(Article $article): void
{
$event = new GenericEvent($article, ['action' => 'publish']);
$this->dispatcher->dispatch($event, 'article.publish');
$subject = $event->getSubject();
if (null !== $subject) {
echo $subject->title;
}
}
}
?>
Пример
Давайте создадим событие без субъекта и получим null:
<?php
namespace AppService;
use SymfonyComponentEventDispatcherGenericEvent;
class ArticleService
{
public function handle(): void
{
$event = new GenericEvent();
$subject = $event->getSubject();
var_dump($subject);
}
}
?>
Результат выполнения кода:
NULL
Смотрите также
-
класс
GenericEvent,
который представляет универсальное событие -
метод
getArgument,
который возвращает аргумент события -
метод
getArguments,
который возвращает все аргументы события -
метод
dispatch,
который запускает событие