Метод createProgressBar
Метод createProgressBar класса SymfonyStyle создаёт и возвращает
объект ProgressBar, который используется для визуального отображения
прогресса выполнения длительной операции в консольной команде. Метод не принимает
обязательных параметров. Если передать первым параметром целое число, оно задаст
максимальное количество шагов прогресс-бара. Если параметр не передан, прогресс-бар
будет работать в бесконечном режиме до явного вызова метода finish.
Синтаксис
public function createProgressBar(int $max = 0): ProgressBar
Пример
Давайте создадим простую консольную команду, которая выводит прогресс-бар на пять шагов и продвигает его в цикле:
<?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);
$progressBar = $io->createProgressBar(5);
$progressBar->start();
for ($i = 1; $i <= 5; $i++) {
$progressBar->advance();
}
$progressBar->finish();
$io->newLine();
return Command::SUCCESS;
}
}
?>
Результат выполнения команды:
5/5 [============================] 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'];
$progressBar = $io->createProgressBar(count($items));
$progressBar->start();
foreach ($items as $item) {
$progressBar->advance();
}
$progressBar->finish();
$io->newLine();
$io->success('Done');
return Command::SUCCESS;
}
}
?>
Результат выполнения команды:
4/4 [============================] 100%
[OK] Done
Смотрите также
-
класс
SymfonyStyle,
который предоставляет методы для стилизации вывода -
метод
progressStart,
который запускает прогресс-бар -
метод
progressAdvance,
который продвигает прогресс-бар на один шаг -
метод
progressFinish,
который завершает прогресс-бар