Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
1257 of 1361 menu
◀ ▶

Метод 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,
    который добавляет опцию команды
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить