Метод addArgument
Метод addArgument класса Command
добавляет позиционный аргумент в консольную
команду. Первым параметром передаётся имя
аргумента. Вторым параметром передаётся режим
аргумента: InputArgument::REQUIRED,
InputArgument::OPTIONAL или
InputArgument::IS_ARRAY. Третьим
параметром передаётся описание аргумента,
четвёртым - значение по умолчанию. Метод
возвращает объект команды, что позволяет
выстраивать цепочку вызовов.
Синтаксис
$command->addArgument(string $name, int $mode = null, string $description = '', mixed $default = null)
Пример
Давайте создадим команду с обязательным
аргументом name и выведем его значение:
<?php
namespace AppCommand;
use SymfonyComponentConsoleCommandCommand;
use SymfonyComponentConsoleInputInputArgument;
use SymfonyComponentConsoleInputInputInterface;
use SymfonyComponentConsoleOutputOutputInterface;
class ArticleCommand extends Command
{
protected static $defaultName = 'app:article';
protected function configure(): void
{
$this->addArgument('name', InputArgument::REQUIRED, 'The name of the article');
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$name = $input->getArgument('name');
$output->writeln($name);
return Command::SUCCESS;
}
}
?>
Результат выполнения команды:
php bin/console app:article hello
hello
Пример
Давайте добавим необязательный аргумент
text со значением по умолчанию:
<?php
namespace AppCommand;
use SymfonyComponentConsoleCommandCommand;
use SymfonyComponentConsoleInputInputArgument;
use SymfonyComponentConsoleInputInputInterface;
use SymfonyComponentConsoleOutputOutputInterface;
class ArticleCommand extends Command
{
protected static $defaultName = 'app:article';
protected function configure(): void
{
$this->addArgument('text', InputArgument::OPTIONAL, 'The text of the article', 'abcde');
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$text = $input->getArgument('text');
$output->writeln($text);
return Command::SUCCESS;
}
}
?>
Результат выполнения команды без аргумента:
php bin/console app:article
abcde
Результат выполнения команды с аргументом:
php bin/console app:article user
user
Пример
Давайте добавим аргумент-массив tags
с помощью режима InputArgument::IS_ARRAY:
<?php
namespace AppCommand;
use SymfonyComponentConsoleCommandCommand;
use SymfonyComponentConsoleInputInputArgument;
use SymfonyComponentConsoleInputInputInterface;
use SymfonyComponentConsoleOutputOutputInterface;
class ArticleCommand extends Command
{
protected static $defaultName = 'app:article';
protected function configure(): void
{
$this->addArgument('tags', InputArgument::IS_ARRAY, 'The tags of the article');
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$tags = $input->getArgument('tags');
$output->writeln(implode(', ', $tags));
return Command::SUCCESS;
}
}
?>
Результат выполнения команды:
php bin/console app:article php symfony console
php, symfony, console