Метод confirm
Метод confirm класса SymfonyStyle выводит в консоль вопрос
и ждёт от пользователя подтверждения. Первым параметром передаётся
текст вопроса. Вторым параметром передаётся значение по умолчанию,
которое будет возвращено, если пользователь просто нажмёт Enter.
Метод возвращает true, если пользователь подтвердил действие,
и false, если отказался.
По умолчанию пользователь отвечает 'yes' или 'no'.
При желании можно изменить эти слова на свои собственные.
Синтаксис
confirm(string $question, bool $default = true): bool
Пример
Давайте спросим у пользователя подтверждение действия и выведем результат:
<?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->confirm('Continue?', false);
if ($res) {
$io->success('Confirmed');
} else {
$io->warning('Canceled');
}
return Command::SUCCESS;
}
}
?>
Результат выполнения кода при ответе пользователя 'yes':
"Confirmed"
Результат выполнения кода при ответе пользователя 'no':
"Canceled"
Пример
Давайте используем значение по умолчанию true, чтобы пользователь
мог просто нажать 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->confirm('Delete article?', true);
$io->writeln($res ? 'Deleted' : 'Skipped');
return Command::SUCCESS;
}
}
?>
Результат выполнения кода при простом нажатии Enter:
"Deleted"
Пример
Давайте зададим собственные слова для ответа вместо 'yes' и 'no':
<?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->confirm('Publish article?', true);
$io->writeln($res ? 'Published' : 'Draft');
return Command::SUCCESS;
}
}
?>
Результат выполнения кода при ответе пользователя 'yes':
"Published"
Смотрите также
-
класс
SymfonyStyle,
который предоставляет методы для красивого вывода в консоль -
метод
ask,
который задаёт пользователю вопрос и возвращает ответ -
метод
choice,
который предлагает пользователю выбрать вариант из списка -
метод
success,
который выводит сообщение об успешном выполнении