Метод hasArgument класса GenericEvent
Метод hasArgument класса GenericEvent
проверяет наличие аргумента по его имени.
Первым параметром передаётся имя аргумента.
Метод возвращает true, если аргумент существует,
и false в противном случае.
Синтаксис
public function hasArgument(string $key): bool
Пример
Давайте создадим событие с аргументом и проверим его наличие:
<?php
namespace AppEvent;
use SymfonyComponentEventDispatcherGenericEvent;
class UserEvent extends GenericEvent
{
public function __construct(string $subject, array $arguments = [])
{
parent::__construct($subject, $arguments);
}
}
?>
Теперь проверим наличие аргумента name:
<?php
namespace AppController;
use AppEventUserEvent;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class EventController extends AbstractController
{
#[Route('/event', name: 'event_check')]
public function check(): Response
{
$event = new UserEvent('user', ['name' => 'abcde']);
$res = $event->hasArgument('name');
return new Response(var_export($res, true));
}
}
?>
Результат выполнения кода:
true
Пример
Давайте проверим наличие несуществующего аргумента email:
<?php
namespace AppController;
use AppEventUserEvent;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class EventController extends AbstractController
{
#[Route('/event-missing', name: 'event_missing')]
public function missing(): Response
{
$event = new UserEvent('user', ['name' => 'abcde']);
$res = $event->hasArgument('email');
return new Response(var_export($res, true));
}
}
?>
Результат выполнения кода:
false
Пример
Давайте используем метод в слушателе события для проверки аргумента:
<?php
namespace AppEventListener;
use AppEventUserEvent;
class UserListener
{
public function onUserEvent(UserEvent $event): void
{
if ($event->hasArgument('name')) {
$name = $event->getArgument('name');
echo 'Name: ' . $name;
} else {
echo 'Name argument not found';
}
}
}
?>
Результат выполнения кода:
"Name: abcde"
Смотрите также
-
класс
GenericEvent,
который представляет базовое событие с аргументами -
метод
getArgument,
который возвращает аргумент по имени -
метод
setArgument,
который устанавливает аргумент события -
метод
getArguments,
который возвращает все аргументы события