Progress bar v Artisan příkazu
Pro dlouho běžící úlohy může být užitečné zobrazit indikátor progresu. Laravel toto dokáže bez problémů, nicméně si ukážeme jak dosáhnout toho samého, ale co už v oficiální dokumentaci nenajdete.
V oficiální Laravel dokumentaci najdeme sekci popisující celý postup implementace progress baru:
$users = App\Models\User::all();
$bar = $this->output->createProgressBar(count($users));
$bar->start();
foreach ($users as $user) {
$this->performTask($user);
$bar->advance();
}
$bar->finish();
Využijeme zde output objekt a následně můžeme odstartovat, pokračovat a zastavit progress bar. Jako první musíme nadefinovat celkový počet kroků, které bude proces iterovat. Poté s každým prvkem pokračujeme v progress baru.
Co v dokumentaci ale už nenajdete je, že od Laravel verze 8.16.0 můžeme celý proces zkrátit:
$this->withProgressBar($users, function($user) {
$this->performTask($user);
});
Díky tomuto se nám dost zkrátil zápis a také je kód více čitelný.