Метод progressStart
Метод progressStart класса SymfonyStyle
запускает прогресс-бар - визуальный индикатор
выполнения длительной операции в консоли.
Первым параметром передаётся максимальное
количество шагов. Вторым необязательным
параметром задаётся формат вывода прогресса.
После вызова метода необходимо продвигать
прогресс методом progressAdvance и
завершать его методом progressFinish.
Синтаксис
public function progressStart(int $max = 0): void
Пример
Давайте создадим команду, которая запускает прогресс-бар на 100 шагов и завершает его:
<?php
namespace AppCommand;
use SymfonyComponentConsoleCommandCommand;
use SymfonyComponentConsoleInputInputInterface;
use SymfonyComponentConsoleOutputOutputInterface;
use SymfonyComponentConsoleStyleSymfonyStyle;
class ProgressCommand extends Command
{
protected static $defaultName = 'app:progress';
protected function execute(InputInterface $input, OutputInterface $output): int
{
$io = new SymfonyStyle($input, $output);
$io->progressStart(100);
for ($i = 0; $i < 100; $i++) {
$io->progressAdvance();
}
$io->progressFinish();
return Command::SUCCESS;
}
}
?>
Результат выполнения команды:
100/100 [============================] 100%
Пример
Давайте запустим прогресс-бар и будем продвигать его на несколько шагов за раз:
<?php
namespace AppCommand;
use SymfonyComponentConsoleCommandCommand;
use SymfonyComponentConsoleInputInputInterface;
use SymfonyComponentConsoleOutputOutputInterface;
use SymfonyComponentConsoleStyleSymfonyStyle;
class ProgressCommand extends Command
{
protected static $defaultName = 'app:progress';
protected function execute(InputInterface $input, OutputInterface $output): int
{
$io = new SymfonyStyle($input, $output);
$io->progressStart(10);
for ($i = 0; $i < 5; $i++) {
$io->progressAdvance(2);
}
$io->progressFinish();
return Command::SUCCESS;
}
}
?>
Результат выполнения команды:
10/10 [============================] 100%
Пример
Давайте запустим прогресс-бар с произвольным количеством шагов и выведем сообщение после завершения:
<?php
namespace AppCommand;
use SymfonyComponentConsoleCommandCommand;
use SymfonyComponentConsoleInputInputInterface;
use SymfonyComponentConsoleOutputOutputInterface;
use SymfonyComponentConsoleStyleSymfonyStyle;
class ProgressCommand extends Command
{
protected static $defaultName = 'app:progress';
protected function execute(InputInterface $input, OutputInterface $output): int
{
$io = new SymfonyStyle($input, $output);
$items = ['article', 'user', 'hello', 'abcde'];
$total = count($items);
$io->progressStart($total);
foreach ($items as $item) {
$io->progressAdvance();
}
$io->progressFinish();
$io->success('Done');
return Command::SUCCESS;
}
}
?>
Результат выполнения команды:
4/4 [============================] 100%
[OK] Done
Смотрите также
-
класс
SymfonyStyle,
который предоставляет методы для красивого вывода в консоль -
метод
progressAdvance,
который продвигает прогресс-бар на заданное число шагов -
метод
progressFinish,
который завершает отображение прогресс-бара -
метод
createProgressBar,
который создаёт объект прогресс-бара вручную