我正在使用 symfony 控制台包,在该包中我让它在执行命令时请求一个值,也就是在public function execute(...)
.
当试图向用户询问某事时,我认为如果您不制作自己的自定义样式,这是两种不同的方法。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
,看起来它在验证方面并没有太大的不同,正如班级所说,它只是样式。那么有什么我遗漏的东西是这两者之间的区别吗?是否有可能实现SymfonyStyle
完全接受空洞的答案?