РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1337 of 1392 menu

Метод withProgressBar

Метод withProgressBar применяется к экземпляру класса Command и позволяет визуализировать прогресс выполнения длительных операций. Первым параметром передаётся количество шагов (итераций), вторым - замыкание (callable), которое будет выполнено для каждого шага. Метод автоматически обновляет индикатор выполнения после каждой итерации и возвращает массив результатов, собранных из замыкания.

Синтаксис

<?php $res = $this->withProgressBar($steps, function ($item) { // Обработка элемента return $result; }); ?>

Пример

Давайте обработаем массив пользователей и выведем прогресс выполнения:

<?php namespace AppConsoleCommands; use IlluminateConsoleCommand; class ProgressExample extends Command { protected $signature = 'app:progress'; protected $description = 'Test progress bar'; public function handle() { $users = ['user1', 'user2', 'user3', 'user4', 'user5']; $res = $this->withProgressBar($users, function ($user) { sleep(1); return strtoupper($user); }); $this->info('Processed: ' . implode(', ', $res)); } } ?>

Результат выполнения команды:

"Processed: USER1, USER2, USER3, USER4, USER5"

Пример

Используем прогресс-бар для обработки записей из базы данных:

<?php namespace AppConsoleCommands; use IlluminateConsoleCommand; use AppModelsArticle; class UpdateArticles extends Command { protected $signature = 'app:update-articles'; protected $description = 'Update all articles'; public function handle() { $articles = Article::where('status', 'pending')->get(); $res = $this->withProgressBar($articles, function ($article) { $article->status = 'published'; $article->save(); return $article->id; }); $this->info('Updated articles: ' . count($res)); } } ?>

Результат выполнения кода:

"Updated articles: 10"

Пример

Прогресс-бар с явным указанием количества итераций:

<?php namespace AppConsoleCommands; use IlluminateConsoleCommand; class GenerateReports extends Command { protected $signature = 'app:generate-reports'; protected $description = 'Generate report files'; public function handle() { $total = 100; $res = []; $this->withProgressBar($total, function ($i) use (&$res) { $res[] = "report_" . $i . ".pdf"; sleep(0.1); }); $this->info('Generated ' . count($res) . ' reports'); } } ?>

Результат выполнения кода:

"Generated 100 reports"

Смотрите также

  • метод table,
    который выводит данные в виде таблицы
  • метод info,
    который выводит информационное сообщение
  • метод error,
    который выводит сообщение об ошибке
  • метод confirm,
    который запрашивает подтверждение у пользователя
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить