/** * Print progress on an iterator * * @param array $items * @param callable $closure */ public function progressIterator($items, callable $closure) { // Normal loop if no output if (!$this->command or sizeof($items) == 1) { foreach ($items as $value) { $closure($value); } return; } $output = $this->command->getOutput(); $iterations = sizeof($items); // Create Progress helper if (class_exists('Symfony\\Component\\Console\\Helper\\ProgressBar')) { $progress = new \Symfony\Component\Console\Helper\ProgressBar($output, $iterations); $progress->start(); } else { $progress = $this->command->getHelper('progress'); $progress->start($output, $iterations); } // Loop over items foreach ($items as $value) { $progress->advance(); $closure($value, $progress); } $progress->finish(); }