Класс Input
Класс Input инкапсулирует данные, которые пользователь передал в консольную команду. Через объект этого класса команда получает доступ к аргументам (позиционным параметрам) и опциям (флагам с значениями). Объект Input автоматически внедряется в метод execute контроллера команды.
Синтаксис
use Symfony\Component\Console\Input\InputInterface;
public function execute(InputInterface $input, OutputInterface $output): int
Пример
Давайте создадим команду, которая принимает аргумент name и выводит приветствие:
<?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:hello')]
class HelloCommand extends Command
{
protected function configure(): void
{
$this->addArgument('name', InputArgument::REQUIRED, 'User name');
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$name = $input->getArgument('name');
$output->writeln('Hello, ' . $name);
return Command::SUCCESS;
}
}
?>
Результат выполнения команды php bin/console app:hello user:
Hello, user
Пример
Давайте добавим опцию upper и проверим её наличие через метод hasOption:
<?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\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
#[AsCommand(name: 'app:hello')]
class HelloCommand extends Command
{
protected function configure(): void
{
$this->addArgument('name', InputArgument::REQUIRED, 'User name');
$this->addOption('upper', null, InputOption::VALUE_NONE, 'Uppercase text');
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$name = $input->getArgument('name');
if ($input->hasOption('upper') && $input->getOption('upper')) {
$name = strtoupper($name);
}
$output->writeln('Hello, ' . $name);
return Command::SUCCESS;
}
}
?>
Результат выполнения команды php bin/console app:hello user --upper:
Hello, USER
Смотрите также
-
метод
getArgument,
который возвращает значение аргумента -
метод
getOption,
который возвращает значение опции -
метод
hasArgument,
который проверяет наличие аргумента -
метод
setArgument,
который устанавливает значение аргумента