Метод addOption
Метод addOption класса Command добавляет
опцию в консольную команду. Первым параметром
передаётся имя опции, вторым - короткое имя
(сокращение), третьим - режим ввода, четвёртым -
описание, пятым - значение по умолчанию.
Опции отличаются от аргументов тем, что передаются
с префиксом -- или - и могут быть
необязательными.
Синтаксис
addOption(string $name, string|array|null $shortcut = null, int $mode = null, string $description = '', mixed $default = null, array|\Closure $suggestedValues = [])
Пример
Давайте создадим команду с опцией --name:
<?php
namespace App\Command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
class ArticleCommand extends Command
{
protected function configure(): void
{
$this
->setName('app:article')
->setDescription('Article command')
->addOption(
'name',
null,
InputOption::VALUE_REQUIRED,
'User name',
'hello'
);
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$name = $input->getOption('name');
$output->writeln($name);
return Command::SUCCESS;
}
}
?>
Результат выполнения команды php bin/console app:article --name=abcde:
abcde
Пример
Давайте добавим опцию с коротким именем -u и значением по умолчанию:
<?php
namespace App\Command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
class ArticleCommand extends Command
{
protected function configure(): void
{
$this
->setName('app:article')
->setDescription('Article command')
->addOption(
'user',
'u',
InputOption::VALUE_REQUIRED,
'User name',
'hello'
);
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$user = $input->getOption('user');
$output->writeln($user);
return Command::SUCCESS;
}
}
?>
Результат выполнения команды php bin/console app:article -u abcde:
abcde
Результат выполнения команды php bin/console app:article без указания опции:
hello
Пример
Давайте добавим опцию-флаг без значения:
<?php
namespace App\Command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
class ArticleCommand extends Command
{
protected function configure(): void
{
$this
->setName('app:article')
->setDescription('Article command')
->addOption(
'force',
'f',
InputOption::VALUE_NONE,
'Force execution'
);
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
if ($input->getOption('force')) {
$output->writeln('forced');
} else {
$output->writeln('normal');
}
return Command::SUCCESS;
}
}
?>
Результат выполнения команды php bin/console app:article -f:
forced
Результат выполнения команды php bin/console app:article:
normal
Смотрите также
-
класс
Command,
который представляет консольную команду -
метод
addArgument,
который добавляет аргумент в команду -
метод
configure,
который настраивает команду -
метод
execute,
который выполняет команду