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

Метод setArgument класса GenericEvent

Метод setArgument класса GenericEvent устанавливает значение аргумента события по его имени. Первым параметром передаётся имя аргумента, вторым - его значение. Если аргумент с таким именем уже существует, его значение будет перезаписано. Метод возвращает объект события, что позволяет выстраивать цепочку вызовов.

Синтаксис

public function setArgument(string $key, mixed $value): static

Пример

Давайте создадим событие и установим ему аргумент 'name':

<?php use Symfony\Component\EventDispatcher\GenericEvent; $event = new GenericEvent(); $event->setArgument('name', 'abcde'); echo $event->getArgument('name'); ?>

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

"abcde"

Пример

Давайте передадим начальные аргументы в конструктор, а затем перезапишем один из них через setArgument:

<?php use Symfony\Component\EventDispatcher\GenericEvent; $event = new GenericEvent(null, ['name' => 'abcde', 'age' => 30]); $event->setArgument('name', 'hello'); echo $event->getArgument('name'); ?>

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

"hello"

Пример

Давайте используем setArgument в слушателе события, чтобы обогатить событие данными перед вызовом следующего слушателя:

<?php namespace App\EventSubscriber; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\EventDispatcher\GenericEvent; class ArticleSubscriber implements EventSubscriberInterface { public static function getSubscribedEvents(): array { return [ 'article.created' => 'onArticleCreated', ]; } public function onArticleCreated(GenericEvent $event): void { $event->setArgument('status', 'published'); } } ?>

Давайте вызовем событие и прочитаем установленный аргумент:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\EventDispatcher\GenericEvent; use Symfony\Component\HttpFoundation\Response; class ArticleController extends AbstractController { public function index(EventDispatcherInterface $dispatcher): Response { $event = new GenericEvent(); $dispatcher->dispatch($event, 'article.created'); return new Response($event->getArgument('status')); } } ?>

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

"published"

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

  • класс GenericEvent,
    который представляет универсальное событие
  • метод getArgument,
    который возвращает аргумент события по имени
  • метод hasArgument,
    который проверяет наличие аргумента события
  • метод getArguments,
    который возвращает все аргументы события
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить