在Symfony的documentation about ProgressBar
中,有一个显示非常ProgressBar
的gif。
在文章本身is stated中:
格式可以跨越多行;这在你想要的时候非常有用 在进度条旁显示更多上下文信息(请参阅 本文开头的例子。)
可是:
\n
似乎无效。ProgressBar
的工作示例?答案 0 :(得分:2)
\n
没有转义或使用单引号字符串,使用\n
就是正确的。例如:
/** @var ProgressBar $bar */
$bar->setFormat("Current: %current%\nMax: %max%");
引用示例的代码是单元测试的一部分。该代码位于870cc23a/Tests/Helper/ProgressBarTest.php#L654
我删除了单元测试代码并创建了一个工作示例(使用symfony/console ^3.3
测试):
<强>代码强>
<?php
use Symfony\Component\Console\Helper\Helper;
use Symfony\Component\Console\Helper\ProgressBar;
use Symfony\Component\Console\Output\ConsoleOutput;
require 'vendor/autoload.php';
$bar = new ProgressBar(new ConsoleOutput(), 15);
ProgressBar::setPlaceholderFormatterDefinition('memory', function (ProgressBar $bar) {
static $i = 0;
$mem = 100000 * $i;
$colors = $i++ ? '41;37' : '44;37';
return "\033[" . $colors . 'm ' . Helper::formatMemory($mem) . " \033[0m";
});
$bar->setFormat(" \033[44;37m %title:-37s% \033[0m\n %current%/%max% %bar% %percent:3s%%\n %remaining:-10s% %memory:37s%");
$bar->setBarCharacter($done = "\033[32m●\033[0m");
$bar->setEmptyBarCharacter($empty = "\033[31m●\033[0m");
$bar->setProgressCharacter($progress = "\033[32m➤ \033[0m");
$bar->setMessage('Starting the demo... fingers crossed', 'title');
$bar->start();
for ($i = 0; $i < 15; ++$i) {
usleep(250000);
$bar->advance();
}
$bar->finish();
echo "\n";
<强>作曲强>
{
"require": {
"symfony/console": "^3.3"
}
}