注意:从Laravel 5.5开始,您应该使用代替.$this->command->getOutput()
$this->output
该对象是 Symfony 的一个实例,它提供了方法和 。$this->output
Symfony\Component\Console\Style\SymfonyStyle
progressStart()
progressAdvance()
progressFinish()
该方法动态创建对象的实例并将其追加到输出对象,以便您可以使用 和 操作它。progressStart()
Symfony\Component\Console\Helper\ProgressBar
progressAdvance()
progressFinish()
不幸的是,Symfony的家伙决定将属性和方法都保持为私有,因此如果您曾经启动过,则无法通过输出对象直接访问实际的ProgressBar实例。$progressBar
getProgressBar()
progressStart()
创建ProgressBar() 来救援!
但是,有一个很酷的未记录方法,可以返回一个闪亮的全新ProgressBar对象,您可以使用它。createProgressBar($max)
因此,您可以执行以下操作:
$progress = this->output->createProgressBar(100);
并使用您提供的Symfony文档页面做任何您想做的事情。例如:
$this->info("Creating progress bar...\n");
$progress = $this->output->createProgressBar(100);
$progress->setFormat("%message%\n %current%/%max% [%bar%] %percent:3s%%");
$progress->setMessage("100? I won't count all that!");
$progress->setProgress(60);
for ($i = 0;$i<40;$i++) {
sleep(1);
if ($i == 90) $progress->setMessage('almost there...');
$progress->advance();
}
$progress->finish();
希望它有帮助。;)