Symfony命令行组件Console component是我们的第二大受欢迎组件,每月一百万次以上的下载,以及2300多个项目正在使用它。在Symfony 2.8中,我们用一些新功能强化了该组件的实力。

允许使用表格列的样式 

Symfony 2.8中能够对每一个表格列,定义不同的视觉效果。首先,实例化TableStyle类来定义样式功能:

1
2
3
4
use Symfony\Component\Console\Helper\TableStyle;
 
$rightAligned = new TableStyle();
$rightAligned->setPadType(STR_PAD_LEFT);

然后,通过列的检索值,可钭这个自定义风格到任何一个表格列。

1
2
3
4
5
6
7
8
9
10
use Symfony\Component\Console\Helper\Table;
 
$table = new Table($output);
$table->setHeaders(['#', 'Path', 'Size']);
 
$table->setColumnStyle(2, $rightAligned);
 
// ...
 
$table->render();

现在,当输出这个表格时,其第三列(数字检索值为2)的内容将居右。

在quiet mode中显示异常 

某些环境下,以--quiet选项来运行命令行是常见的,用以避免显示内容。但有个问题是,在静默模式下若有异常发生,也将同样被抑制输出。

在Symfony 2.8中,当有这样一个错误发生时,“静默冗余模式”的行为被修改为始终显示异常细节。这将令你的开发变得简单,本功能维系于我们的Developer Experience commitment

新增了一个进度条指示器helper 

progress bar helper能令你在某些任务中,为进度条创建超酷的动画指示器。在你能够预知任务将于何时完成时,它们是很有用的,如同你在Symfony Installer中所见到的下载进度条那样。

除了“旋转棒”之外,你还可以在进度条指示器处于“激活”的过程中,输出信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
use Symfony\Component\Console\Helper\ProgressIndicator;
 
$progress = new ProgressIndicator($output);
$progress->start('Starting...');
 
// do something ... 进行一些操作
$progress->advance();
 
// do something ... 进行一些操作
$progress->setMessage('Just started...');
 
// do something ... 进行一些操作
$progress->setMessage('Half way...');
 
// do something ... 进行一些操作
$progress->setMessage('Almost Done...');
 
// do something ... 进行一些操作
$progress->finish('Done.');

关于进度条指示器的另一个出色功能是,当操作系统不支持ANSI代码时,进度条输出被优雅的降级了: