Метод isInteractive класса Input
Метод isInteractive класса Input возвращает булево значение, указывающее, является ли текущий ввод интерактивным. Если метод возвращает true, команда может запрашивать у пользователя данные через вопросы. Если false, команда выполняется без взаимодействия с пользователем, например, в автоматическом режиме или при передаче флага --no-interaction. Метод не принимает параметров.
Синтаксис
public function isInteractive(): bool
Пример
Давайте создадим команду, которая проверяет интерактивность ввода и выводит соответствующее сообщение:
<?php
namespace AppCommand;
use SymfonyComponentConsoleCommandCommand;
use SymfonyComponentConsoleInputInputInterface;
use SymfonyComponentConsoleOutputOutputInterface;
class CheckInteractiveCommand extends Command
{
protected static $defaultName = 'app:check-interactive';
protected function execute(InputInterface $input, OutputInterface $output): int
{
$res = $input->isInteractive();
if ($res) {
$output->writeln('Interactive mode is enabled');
} else {
$output->writeln('Interactive mode is disabled');
}
return Command::SUCCESS;
}
}
?>
Результат выполнения команды в обычном режиме:
php bin/console app:check-interactive
Результат выполнения кода:
"Interactive mode is enabled"
Пример
Давайте запустим ту же команду с флагом --no-interaction, чтобы отключить интерактивность:
php bin/console app:check-interactive --no-interaction
Результат выполнения кода:
"Interactive mode is disabled"
Пример
Давайте используем метод isInteractive для условного запроса данных у пользователя:
<?php
namespace AppCommand;
use SymfonyComponentConsoleCommandCommand;
use SymfonyComponentConsoleInputInputInterface;
use SymfonyComponentConsoleOutputOutputInterface;
use SymfonyComponentConsoleQuestionQuestion;
class AskNameCommand extends Command
{
protected static $defaultName = 'app:ask-name';
protected function execute(InputInterface $input, OutputInterface $output): int
{
$name = 'guest';
if ($input->isInteractive()) {
$question = new Question('Enter your name: ', 'guest');
$name = $this->getHelper('question')->ask($input, $output, $question);
}
$output->writeln('Hello, ' . $name);
return Command::SUCCESS;
}
}
?>
Результат выполнения команды без флага --no-interaction:
php bin/console app:ask-name
Результат выполнения кода:
"Hello, guest"
Смотрите также
-
класс
Input,
который представляет входные данные команды -
метод
getArgument,
который возвращает значение аргумента -
метод
getOption,
который возвращает значение опции -
метод
setArgument,
который устанавливает значение аргумента