读过本系列的第一部分第二部分两篇文章,可以了解到Symfony 3.2版的Console组件新功能。

添加对“多行文本”样式选项的支持 

注意 本小节出现的两个链接还没有来得及翻译,过段时间待文档数量增加后,即可正常显示。

控制台命令行的输出,可以使用这些文本样式中的任何一个来改变它的外观:boldunderscoreblinkreverse、和conceal。在Symfony 3.2中,对单一内容你可以组合一个以上的文本样式(比如显示一些具有粗体和下划线的文本):

1
$output->writeln('<fg=green;options=bold,underscore>Test</>');

在任何场景下都要记得,Symfony提供了一个简单的办法,以一种“具有一致性”的方式来应用相同的样式到你的控制台命令中。

添加对私有命令的支持 

默认的Symfony命令行是公有的(public),所以在使用bin/consolebin/console list时,它们始终被包容到命令行列表中。在Symfony 3.2中,你可以从列表中的那些命令中移除一些,使用setPublic(false)方法可以令其私有(private):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// src/AppBundle/Command/FooCommand.php
namespace AppBundle\Command;
 
use Symfony\Component\Console\Command\Command;
 
class FooCommand extends Command
{
    protected function configure()
    {
        $this
            ->setName('app:foo')
            // ...
            ->setPublic(false)
        ;
    }
}

私有命令在行为上和公有命令是一样的,可以像以往一样执行,但它们不在显示在命令列表中,所以末级用户将无视他们的存在。它们最为适合充当“设计给程序中遗产部分”的命令,以及通过计划任务来独家执行的命令,等等。