进度条
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 2.7,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。
进度条
当执行执行长时间运行的命令,它可能有助于显示进度信息,更新你的命令运行:
显示进展细节,使用ProgressBar,通过它的单位总数,并推进进度执行命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
使用ob娱乐下载\组件\控制台\助手\ProgressBar;/ /创建一个新的进度条(50单位)美元progressBar=新ProgressBar (美元输出,50);/ /启动并显示进度条美元progressBar- >开始();美元我=0;而(美元我+ + <50){/ /……做一些工作/ /进度条1单位美元progressBar- >提前();/ /你也可以提前超过一个单位的进度条/ / $ progressBar - >进步(3);}/ /确保进度条为100%美元progressBar- >完成();
而不是推进(酒吧的步骤提前()方法),您也可以通过调用设置当前进展setProgress ()方法。
2.6
的setProgress ()
方法被称为setCurrent ()
Symfony 2ob娱乐下载.6之前。
谨慎
在版本2.6之前,进度条只如果你的平台支持ANSI编码工作;在其他平台上,不生成输出。
提示
如果你的平台不支持ANSI编码,更新进度条添加新行。为了防止被淹没的输出,调整setRedrawFrequency ()相应的行动。默认情况下,当使用马克斯
,重绘频率设置10%你的马克斯
。
2.6
的setRedrawFrequency ()
方法是在Symfony 2.6中引入的。ob娱乐下载
如果你不知道提前的步数,只是省略参数在创建的步骤ProgressBar实例:
1
美元progressBar=新ProgressBar (美元输出);
的进展将被显示为一个动态浏览图示:
1 2 3 4 5 6 7 8 9
#没有马克斯步骤(显示像throbber) 0(> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -) 5(- - - - - - > - - - - - - - - - - - - - - - - - - - - - - -) 5(= = = = = = = = = = = = = = = = = = = = = = = = = = = =] #马克斯步骤定义0/3 (> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -]0% 1/3 (= = = = = = = = = > - - - - - - - - - - - - - - - - - -]33% 3/3 [= = = = = = = = = = = = = = = = = = = = = = = = = = = =)100%
当你的任务完成后,别忘了打电话完成()为了确保进度条显示刷新完成100%。
自定义进度条
内置的格式
默认情况下,信息呈现在一个进度条取决于当前的冗长的水平OutputInterface
实例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
# OutputInterface: VERBOSITY_NORMAL (CLI没有冗长的旗帜)0/3 (> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -]0% 1/3 (= = = = = = = = = > - - - - - - - - - - - - - - - - - -]33% 3/3 [= = = = = = = = = = = = = = = = = = = = = = = = = = = =]100% # OutputInterface:: VERBOSITY_VERBOSE (- v) 0/3(> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -] 0% 1秒1/3(= = = = = = = = = > - - - - - - - - - - - - - - - - - -]33% 1秒3/3[= = = = = = = = = = = = = = = = = = = = = = = = = = = =]100% 1秒# OutputInterface:: VERBOSITY_VERY_VERBOSE (vv) 0/3(> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -] 0% 1秒1/3(= = = = = = = = = > - - - - - - - - - - - - - - - - - -]33% 1秒3/3[= = = = = = = = = = = = = = = = = = = = = = = = = = = =]100% 1秒# OutputInterface:: VERBOSITY_DEBUG (-vvv) 0/3(> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -] 0% 1秒/ 1秒1.0 MB 1/3(= = = = = = = = = > - - - - - - - - - - - - - - - - - -] 33% 1秒/ 1秒1.0 MB 3/3[= = = = = = = = = = = = = = = = = = = = = = = = = = = =] 100% 1秒/ 1秒1.0 MB
请注意
如果你叫一个命令与安静的标志(q
),进度条不会显示出来。
而不是依靠冗长的当前模式命令,您还可以通过强制格式setFormat ()
:
1
美元progressBar- >setFormat (“详细”);
内置的格式如下:
正常的
详细的
very_verbose
调试
如果你不为你的进度条设置步骤的数量,使用_nomax
变体:
normal_nomax
verbose_nomax
very_verbose_nomax
debug_nomax
自定义格式
而不是使用内置的格式,你也可以设置自己的:
1
美元progressBar- >setFormat (“%酒吧%”);
这个格式设置为只显示进度条本身:
1 2 3
> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - = = = = = = = = = > - - - - - - - - - - - - - - - - - - = = = = = = = = = = = = = = = = = = = = = = = = = = = =
一个进度条的格式是一个字符串,其中包含封闭与特定的占位符(一个名称%
字符);的占位符替换基于当前进展。这是一个内置的占位符的列表:
当前的
:当前步骤;马克斯
:步骤的最大数量(或0如果没有定义的最大值);酒吧
:酒吧本身;百分比
:完成的百分比(没有如果没有定义的最大值);运行
:时间开始以来的进度条;剩下的
:剩下的时间来完成任务(没有如果没有定义的最大值);估计
:预计完成任务时间(没有如果没有定义的最大值);内存
:当前内存使用量;消息
:用来显示进度条中的任意消息(稍后解释)。
例如,下面是如何设置的格式是一样的调试
一:
1
美元progressBar- >setFormat (' %电流最大% / % %(%酒吧%)% %:3 s % % %时间:6 s % / %估计:6 s % %记忆:6 s %’);
注意到:6
部分添加到一些占位符吗?这就是你可以调整栏的外观(格式和对齐)。冒号后面的部分(:
)是用于设置sprintf
格式的字符串。
而不是设置一个进度条的格式对于一个给定的实例,您还可以定义全球格式:
1 2 3 4
ProgressBar::setFormatDefinition (“最低”,的进展:% % % %);美元progressBar=新ProgressBar (美元输出,3);美元progressBar- >setFormat (“最低”);
这段代码定义了一个新的最小的
格式,你可以使用你的进度条:
1 2 3
进展:0%进度:33%进度:100%
提示
它几乎总是更好的重新定义内置格式而不是创造新的角色,允许显示自动改变基于命令的冗长的旗帜。
当定义一个新的风格,包含占位符,只可用已知的最大数量的步骤时,您应该创建一个_nomax
变体:
1 2 3 4 5
ProgressBar::setFormatDefinition (“最低”,“剩下的% % % % % %”);ProgressBar::setFormatDefinition (“minimal_nomax”,% % % %的);美元progressBar=新ProgressBar (美元输出);美元progressBar- >setFormat (“最低”);
显示进度条时,将自动设置的格式minimal_nomax
如果酒吧没有像在上面的示例中最大数量的步骤。
提示
可以包含任何有效的ANSI编码和格式设置颜色还可以使用Symfony-specific方式:ob娱乐下载
1 2 3 4
ProgressBar::setFormatDefinition (“最低”,' <信息> % % % > < /信息\ [32 m % 033 \ 033 [0 < fg =白色;bg =蓝色> %剩下% < / > ');
请注意
格式可以跨越多个行;这是非常有用的,当你想要显示更多的上下文信息和进度条(见本文的示例)。
栏设置
在占位符,酒吧
有点特殊的字符用于显示它可以定制:
1 2 3 4 5 6 7 8 9 10 11
/ /完成的酒吧的一部分美元progressBar- >setBarCharacter (“<评论> = < /评论>”);/ /未完成部分的酒吧美元progressBar- >setEmptyBarCharacter (' ');/ /字符的进展美元progressBar- >setProgressCharacter (“|”);/ /栏的宽度美元progressBar- >setBarWidth (50);
谨慎
由于性能原因,小心如果你设置步骤,大量的总数。举个例子,如果你是遍历大量物品,考虑设置重绘通过调用频率更高的价值setRedrawFrequency (),所以它只更新一些迭代:
1 2 3 4 5 6 7 8 9 10 11 12
美元progressBar=新ProgressBar (美元输出,50000年);美元progressBar- >开始();/ /每100次迭代更新美元progressBar- >setRedrawFrequency (One hundred.);美元我=0;而(美元我+ + <50000年){/ /……做一些工作美元progressBar- >提前();}
自定义占位符
如果你想显示一些信息,取决于进度条显示没有可用的列表中内置的占位符,您可以创建自己的。让我们看看如何创建一个remaining_steps
占位符的数量显示剩余的步骤:
1 2 3 4 5 6
ProgressBar::setPlaceholderFormatterDefinition (“remaining_steps”,函数(ProgressBar美元progressBar,OutputInterface美元输出){返回美元progressBar- >getMaxSteps () -美元progressBar- >getProgress ();});
2.6
的getProgress ()
方法被称为getStep ()
Symfony 2ob娱乐下载.6之前。
自定义消息
进度条定义一个占位符消息
显示任意的消息。然而,没有一个内置格式包括占位符,在显示这些信息之前,您必须定义自己的自定义格式:
1 2 3 4
ProgressBar::setFormatDefinition (“自定义”,' %电流最大% / % % % - %消息”);美元progressBar=新ProgressBar (美元输出,One hundred.);美元progressBar- >setFormat (“自定义”);
现在,使用setMessage ()
方法设置的值%消息%
占位符之前显示进度条:
1 2 3 4 5 6 7 8
/ /……美元progressBar- >setMessage (“开始”);美元progressBar- >开始();/ / 0/100——开始美元progressBar- >提前();美元progressBar- >setMessage (“任务正在进行中…”);/ / 1/100——任务正在进行中……
消息可以结合自定义占位符。在这个例子中,进度条使用%消息%
和%文件名%
占位符:
1 2 3 4
ProgressBar::setFormatDefinition (“自定义”,' %电流最大% / % % % - %消息文件名(% %)”);美元progressBar=新ProgressBar (美元输出,One hundred.);美元progressBar- >setFormat (“自定义”);
的setMessage ()
方法接受一个可选的参数设置的值定义占位符:
1 2 3 4 5 6 7 8
/ /……/ /数组$文件=(客户- 001 /发票。xml”、“…”);foreach(美元文件作为美元文件名){美元progressBar- >setMessage (“进口发票…”);美元progressBar- >setMessage (美元文件名,“文件名”);美元progressBar- >提前();/ / 2/100——进口发票…(客户端- 001 / invoices.xml)}