コマンドが実行されたときに値を要求するsymfonyコンソールパッケージで遊んでいますpublic function execute(...)
。
ユーザーに何かを求めようとするとき、独自のカスタム スタイルを作成していない場合、それを行うには 2 つの異なる方法があると考えました。a) 質問ヘルパーを使用する、b) 定義済みのスタイルを使用する、これにより、単純な実行SymfonyStyle
を使用して開始し、値を指定しないとエラーが発生し続けました。代わりにヘルパーを使用して質問を直接作成すると、空の値を与えることができます。 SymfonyStyle
ask("question here")
以下にいくつかの例を示します。
# SomeCommand.php
namespace What\A\Command;
use Symfony\Component\Console\Question\Question;
use Symfony\Component\Console\Style\SymfonyStyle;
// ...
public function execute(InputInterface $input, OutputInterface $output)
{
// ...
// With the helper, which allows empty answer
$helper = $this->getHelper('question');
$q = new Question('Question here');
dump($helper->ask($input, $output, $q));
// Output:
// Question here
// null
// With SymfonyStyle which DOES NOT allow empty answer
$io = new SymfonyStyle($input, $output);
dump($io->ask("Question here"));
// Output:
// Question here:
// [ERROR] A value is required.
}
のファイルを見るSymfonyStyle
と、クラスが言うように、それは単なるスタイリングであるため、検証とはまったく違いがないように見えます。それで、これら2つの違いである何かが欠けていますか?SymfonyStyle
空の回答をまったく受け入れるようにすることは可能ですか?