Метод hasArgument класса Input
Метод hasArgument класса Input проверяет,
существует ли аргумент с указанным именем.
Первым параметром передаётся имя аргумента.
Метод возвращает true, если аргумент существует,
и false в противном случае.
Класс Input находится в пространстве имён
Symfony\Component\Console\Input.
Он является базовым классом для ArgvInput и ArrayInput,
которые используются при работе с консольными командами.
Синтаксис
public function hasArgument(string $name): bool
Пример
Давайте создадим команду и проверим наличие аргумента user:
<?php
namespace App\Command;
use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
#[AsCommand(name: 'app:article')]
class ArticleCommand extends Command
{
protected function configure(): void
{
$this->addArgument('user', InputArgument::REQUIRED);
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$res = $input->hasArgument('user');
$output->writeln(var_export($res, true));
return Command::SUCCESS;
}
}
?>
Результат выполнения команды:
php bin/console app:article abcde
true
Пример
Давайте проверим наличие несуществующего аргумента text:
<?php
namespace App\Command;
use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
#[AsCommand(name: 'app:article')]
class ArticleCommand extends Command
{
protected function configure(): void
{
$this->addArgument('user', InputArgument::REQUIRED);
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$res = $input->hasArgument('text');
$output->writeln(var_export($res, true));
return Command::SUCCESS;
}
}
?>
Результат выполнения команды:
php bin/console app:article abcde
false
Пример
Давайте проверим несколько аргументов и выведем результат для каждого:
<?php
namespace App\Command;
use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
#[AsCommand(name: 'app:article')]
class ArticleCommand extends Command
{
protected function configure(): void
{
$this->addArgument('user', InputArgument::REQUIRED);
$this->addArgument('article', InputArgument::OPTIONAL);
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$res = [
'user' => $input->hasArgument('user'),
'article' => $input->hasArgument('article'),
'text' => $input->hasArgument('text'),
];
$output->writeln(var_export($res, true));
return Command::SUCCESS;
}
}
?>
Результат выполнения команды:
php bin/console app:article abcde
[
'user' => true,
'article' => true,
'text' => false,
]
Смотрите также
-
класс
Input,
который представляет входные данные консольной команды -
метод
getArgument,
который возвращает значение аргумента -
метод
setArgument,
который устанавливает значение аргумента -
метод
hasOption,
который проверяет существование опции