Метод execute класса Command
Метод execute класса Command содержит основную логику
выполнения консольной команды. Он вызывается автоматически
при запуске команды через терминал. Первым параметром
передаётся объект InputInterface для чтения аргументов и опций,
вторым - объект OutputInterface для вывода результата.
Метод должен вернуть код завершения команды: Command::SUCCESS
или Command::FAILURE.
Синтаксис
protected function execute(InputInterface $input, OutputInterface $output): int
Пример
Давайте создадим команду, которая выводит приветствие в терминал:
<?php
namespace AppCommand;
use SymfonyComponentConsoleCommandCommand;
use SymfonyComponentConsoleInputInputInterface;
use SymfonyComponentConsoleOutputOutputInterface;
class HelloCommand extends Command
{
protected static $defaultName = 'app:hello';
protected function execute(InputInterface $input, OutputInterface $output): int
{
$output->writeln('hello');
return Command::SUCCESS;
}
}
?>
Результат выполнения команды в терминале:
php bin/console app:hello
Результат выполнения кода:
hello
Пример
Давайте выведем значение аргумента name, полученного из командной строки:
<?php
namespace AppCommand;
use SymfonyComponentConsoleCommandCommand;
use SymfonyComponentConsoleInputInputArgument;
use SymfonyComponentConsoleInputInputInterface;
use SymfonyComponentConsoleOutputOutputInterface;
class UserCommand extends Command
{
protected static $defaultName = 'app:user';
protected function configure(): void
{
$this->addArgument('name', InputArgument::REQUIRED);
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$name = $input->getArgument('name');
$output->writeln($name);
return Command::SUCCESS;
}
}
?>
Результат выполнения команды для аргумента abcde:
php bin/console app:user abcde
Результат выполнения кода:
abcde
Пример
Давайте вернём код ошибки Command::FAILURE, если аргумент пустой:
<?php
namespace AppCommand;
use SymfonyComponentConsoleCommandCommand;
use SymfonyComponentConsoleInputInputArgument;
use SymfonyComponentConsoleInputInputInterface;
use SymfonyComponentConsoleOutputOutputInterface;
class UserCommand extends Command
{
protected static $defaultName = 'app:user';
protected function configure(): void
{
$this->addArgument('name', InputArgument::OPTIONAL, '', '');
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$name = $input->getArgument('name');
if ($name === '') {
$output->writeln('user not found');
return Command::FAILURE;
}
$output->writeln($name);
return Command::SUCCESS;
}
}
?>
Результат выполнения команды без аргумента:
php bin/console app:user
Результат выполнения кода:
user not found
Смотрите также
-
класс
Command,
который представляет консольную команду -
метод
configure,
который настраивает аргументы и опции команды -
метод
addArgument,
который добавляет аргумент команды -
метод
addOption,
который добавляет опцию команды