РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1256 of 1361 menu

Класс Command

Класс Command - это основа для создания пользовательских консольных команд в Symfony. Наследуя свой класс от Command, вы получаете доступ к методам configure, execute и interact. В методе configure задаётся имя команды, описание, аргументы и опции. Метод execute содержит логику выполнения и возвращает код завершения. Symfony автоматически регистрирует команду, если класс помечен атрибутом AsCommand или зарегистрирован в конфигурации сервисов.

Синтаксис

<?php use Symfony\Component\Console\Command\Command; class MyCommand extends Command { protected function configure(): void { // настройка команды } protected function execute(InputInterface $input, OutputInterface $output): int { // логика команды return Command::SUCCESS; } } ?>

Пример

Давайте создадим простую команду, которая выводит приветствие:

<?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\Output\OutputInterface; #[AsCommand(name: 'app:hello')] class HelloCommand extends Command { protected function configure(): void { $this->setDescription('Выводит приветствие'); } protected function execute(InputInterface $input, OutputInterface $output): int { $output->writeln('hello'); return Command::SUCCESS; } } ?>

Запустим команду в терминале:

php bin/console app:hello

Результат выполнения команды:

hello

Пример

Давайте добавим аргумент 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 ->setDescription('Выводит приветствие') ->addArgument('name', InputArgument::REQUIRED, 'Имя пользователя'); } 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, которая переведёт вывод в верхний регистр:

<?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 ->setDescription('Выводит приветствие') ->addArgument('name', InputArgument::REQUIRED, 'Имя пользователя') ->addOption('upper', null, InputOption::VALUE_NONE, 'Верхний регистр'); } protected function execute(InputInterface $input, OutputInterface $output): int { $name = $input->getArgument('name'); $message = 'hello, ' . $name; if ($input->getOption('upper')) { $message = strtoupper($message); } $output->writeln($message); return Command::SUCCESS; } } ?>

Запустим команду с опцией:

php bin/console app:hello user --upper

Результат выполнения команды:

HELLO, USER

Смотрите также

  • метод configure,
    который настраивает имя, описание и аргументы команды
  • метод execute,
    который содержит логику выполнения команды
  • метод addArgument,
    который добавляет аргумент команды
  • метод addOption,
    который добавляет опцию команды
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить