Symfonyob娱乐下载 3.2的新功能:控制台的改进(第1部分)
警告:这篇文章是关于一个不受支持的Symfony版本。ob娱乐下载有些信息可能已经过时了。阅读最新的Symfony文档ob娱乐下载.
的控制台组件将在Symfony 3.2中获得很多新特性,主要与改进DX(开发者体验)有关ob娱乐下载。在这个由三部分组成的系列文章的第一部分中,我们将介绍其中的四个新特性。
读了第2部分而且第3部分本系列文章的第一部分,介绍Symfony 3.2中控制台组件的新特性。ob娱乐下载
命令别名不再显示为单独的命令
提供的
胡安·米格尔·罗德里格斯
在# 18790.
最佳实践建议定义名称空间命令以避免冲突并改进应用程序组织。然而,对于经常执行的命令,定义快捷方式很方便:
12 3 4 5 6 7 8 9 10 11 12 13 14
类VeryLongNameCommand扩展ContainerAwareCommand{受保护的函数配置(){$这->setName (应用:很长:名字的)->setDescription (“Lorem Ipsum…”)/ /……->setAliases ([“foo”]);}/ /……}
在上面的例子中,命令可以执行为/ bin /控制台应用程序:非常:长:名字
当/ bin /控制台foo
.虽然只有一个命令,但Symfony会将其显示为两个单独的命令:ob娱乐下载
1 2 3 4 5 6
$./bin/console可执行命令:foo Lorem Ipsum…app: app:very:long:name Lorem Ipsum…
在Syob娱乐下载mfony 3.2中,别名现在内联在原始命令中,减少了控制台输出的混乱:
1 2 3 4 5
$./bin/console可选命令:app: app:very:long:name [foo] Lorem Ipsum…
现在即使使用安静模式也会显示错误
提供的
奥拉夫Klischat
在# 18781.
如果你加上q
或——安静
选项在运行Symfony命令时,输出将使用ob娱乐下载OutputInterface: VERBOSITY_QUIET
的水平。这使得该命令不输出任何消息,甚至不输出错误消息。
在Syob娱乐下载mfony 3.2中,我们改进了q
而且——安静
选项,以继续抑制除日志消息之外的所有输出日志:错误
的水平。这样您就再也不会错过错误消息了。
更好地支持单命令应用程序
提供的
格雷戈勒Pineau在# 16906.
构建一个单命令应用在Syob娱乐下载mfony中是可能的,但它需要你做一些改变,不连续传递命令名。在Syob娱乐下载mfony 3.2中,我们改进了基础应用程序
类以开箱即用地支持单个命令应用程序。
首先,像往常一样定义一个命令并创建控制台应用程序。然后,将唯一的命令设置为默认命令并通过真正的
的第二个论点setDefaultCommand ()
.这将把应用程序变成一个单一的命令应用程序:
1 2 3 4 5 6 7 8 9 10 11
使用ob娱乐下载\组件\控制台\应用程序;$命令=新\ FooCommand ();$应用程序=新应用程序();$应用程序->add ($命令);//第二个布尔参数说明这是否是一个单命令应用程序$应用程序->setDefaultCommand ($命令->getName (),真正的);//现在执行'FooCommand'而不传递它的名字$应用程序->run ();
更简单的命令测试
测试Symfony命ob娱乐下载令是不必要的复杂,它要求您深入了解PHP流。例如,如果您的测试需要模拟用户输入123
,喷火
而且酒吧
,你必须做以下工作:
12 3 4 5 6 7 8 9 10 11 12 13
使用ob娱乐下载\组件\控制台\测试人员\CommandTester;$commandTester=新CommandTester ($命令);$助手=$命令->getHelper (“问题”);$助手->setInputStream ($这->getInputStream (“123 \ nfoo \ nbar \ n”));受保护的函数getInputStream($输入){$流= fopen (“php: / /记忆”,' r + ',假);fputs ($流,$输入);倒带($流);返回$流;}
在Syob娱乐下载mfony 3.2中,我们通过添加新的setInputs ()
方法。CommandTester
帮手。你只需要传递一个数组的内容,用户将键入:
1 2 3 4
使用ob娱乐下载\组件\控制台\测试人员\CommandTester;$commandTester=新CommandTester ($命令);$commandTester->setInputs ([“123”,“foo”,“酒吧”]);
评论
评论截止。
为了确保评论保持相关性,旧帖子将被关闭。