Метод setOption класса Input
Метод setOption класса Input
позволяет задать значение опции команды
по её имени. Первым параметром передаётся
имя опции, вторым - её значение. Метод
удобен, когда нужно изменить поведение
команды во время её выполнения или
передать значение опции программно.
Синтаксис
$input->setOption(string $name, mixed $value)
Пример
Давайте создадим команду и установим значение опции format через метод setOption:
<?php
namespace App\Command;
use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
#[AsCommand(name: 'app:article')]
class ArticleCommand extends Command
{
protected function configure(): void
{
$this
->addOption('format', null, InputOption::VALUE_REQUIRED, 'Output format')
->addOption('limit', null, InputOption::VALUE_REQUIRED, 'Item limit');
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$input->setOption('format', 'json');
$input->setOption('limit', 10);
$output->writeln('Format: ' . $input->getOption('format'));
$output->writeln('Limit: ' . $input->getOption('limit'));
return Command::SUCCESS;
}
}
?>
Результат выполнения команды:
Format: json
Limit: 10
Пример
Давайте установим опцию user со значением 'abcde' и выведем результат:
<?php
namespace App\Command;
use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
#[AsCommand(name: 'app:user')]
class ArticleCommand extends Command
{
protected function configure(): void
{
$this->addOption('user', null, InputOption::VALUE_REQUIRED, 'User name');
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$input->setOption('user', 'abcde');
$output->writeln('User: ' . $input->getOption('user'));
return Command::SUCCESS;
}
}
?>
Результат выполнения команды:
User: abcde
Пример
Давайте установим опцию enabled с булевым значением true:
<?php
namespace App\Command;
use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
#[AsCommand(name: 'app:status')]
class ArticleCommand extends Command
{
protected function configure(): void
{
$this->addOption('enabled', null, InputOption::VALUE_NONE, 'Enable status');
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$input->setOption('enabled', true);
$status = $input->getOption('enabled') ? 'on' : 'off';
$output->writeln('Status: ' . $status);
return Command::SUCCESS;
}
}
?>
Результат выполнения команды:
Status: on
Смотрите также
-
класс
Input,
который представляет входные данные команды -
метод
getOption,
который возвращает значение опции -
метод
hasOption,
который проверяет наличие опции -
метод
setArgument,
который устанавливает значение аргумента