Обычный рабочий процесс для индикаторов прогресса Symfony Console – их запуск, продвижение в соответствии с ходом выполнения задачи и завершение их:
use Symfony\Component\Console\Helper\ProgressBar;
$progressBar = new ProgressBar($output);
$progressBar->start();
// ... do some work
$progressBar->advance();
// needed to ensure that the bar reaches 100%
$progressBar->finish();В Symfony 4.3 улучшили этот рабочий процесс, когда вы работаете с итеративными переменными (такими как массивы или генераторы). Благодаря новому методу iterate() вы можете передавать итерируемую переменную, и индикатор выполнения запускается, перемещается и заканчивается автоматически.
Рассмотрим следующий простой генератор PHP:
$iterable = function () {
    yield 1;
    yield 2;
    // ...
};Вы можете превратить это в индикатор выполнения следующим образом:
use Symfony\Component\Console\Helper\ProgressBar;
$progressBar = new ProgressBar($output);
foreach ($progressBar->iterate($iterable) as $value) {
    // ... do some work
}Вывод в терминале будет следующим:
0/2 [>---------------------------] 0% 1/2 [==============>-------------] 50% 2/2 [============================] 100%