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

Метод choice

Метод choice класса SymfonyStyle создаёт интерактивный запрос, в котором пользователю предлагается выбрать один вариант из заранее заданного списка. Первым параметром передаётся вопрос, который увидит пользователь. Вторым параметром передаётся массив доступных вариантов. Третьим параметром можно передать значение по умолчанию, которое будет возвращено, если пользователь нажмёт Enter без ввода.

Синтаксис

public function choice( string $question, array $choices, mixed $default = null ): mixed

Пример

Давайте выведем список из трёх вариантов и получим выбранное значение:

<?php namespace AppCommand; use SymfonyComponentConsoleCommandCommand; use SymfonyComponentConsoleInputInputInterface; use SymfonyComponentConsoleOutputOutputInterface; use SymfonyComponentConsoleStyleSymfonyStyle; class ArticleCommand extends Command { protected static $defaultName = 'app:article'; protected function execute(InputInterface $input, OutputInterface $output): int { $io = new SymfonyStyle($input, $output); $res = $io->choice( 'Select an article', ['article 1', 'article 2', 'article 3'] ); $io->writeln('You selected: ' . $res); return Command::SUCCESS; } } ?>

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

"Select an article [article 1]:" " > article 2" "You selected: article 2"

Пример

Давайте зададим вариант по умолчанию, который будет выбран при нажатии Enter:

<?php namespace AppCommand; use SymfonyComponentConsoleCommandCommand; use SymfonyComponentConsoleInputInputInterface; use SymfonyComponentConsoleOutputOutputInterface; use SymfonyComponentConsoleStyleSymfonyStyle; class ArticleCommand extends Command { protected static $defaultName = 'app:article'; protected function execute(InputInterface $input, OutputInterface $output): int { $io = new SymfonyStyle($input, $output); $res = $io->choice( 'Select an article', ['article 1', 'article 2', 'article 3'], 'article 2' ); $io->writeln('You selected: ' . $res); return Command::SUCCESS; } } ?>

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

"Select an article [article 2]:" "You selected: article 2"

Пример

Давайте используем ассоциативный массив, чтобы ключи отличались от отображаемых значений:

<?php namespace AppCommand; use SymfonyComponentConsoleCommandCommand; use SymfonyComponentConsoleInputInputInterface; use SymfonyComponentConsoleOutputOutputInterface; use SymfonyComponentConsoleStyleSymfonyStyle; class ArticleCommand extends Command { protected static $defaultName = 'app:article'; protected function execute(InputInterface $input, OutputInterface $output): int { $io = new SymfonyStyle($input, $output); $res = $io->choice( 'Select an article', [ 'first' => 'article 1', 'second' => 'article 2', 'third' => 'article 3', ] ); $io->writeln('You selected: ' . $res); return Command::SUCCESS; } } ?>

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

"Select an article [first]:" " > second" "You selected: second"

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

  • класс SymfonyStyle,
    который предоставляет методы для вывода в консоль
  • метод ask,
    который запрашивает у пользователя ввод строки
  • метод confirm,
    который запрашивает подтверждение действия
  • метод askHidden,
    который запрашивает скрытый ввод пользователя
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить