Example #1
0
 /**
  * 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();
 }