php - 如何在命令的类上显示进度条

标签 php laravel symfony laravel-5.2

使用 Progress Bar 的所有示例都显示了一个简单的代码,但可以使用 artisan 命令

$users = App\User::all();

$bar = $this->output->createProgressBar(count($users));

foreach ($users as $user) {
    $this->performTask($user);

    $bar->advance();
}

$bar->finish();

但是我喜欢在从我的命令调用的一个类上实现但不起作用。
php artisan migratedb:migrate table --table=cms_users

迁移数据库.php
 ...
 use Abkrim\Setdart\MigrateTables;

 $migration = new MigrateTables($this->argument('type'), $this->option('table'));
 $migration->runMigration();

迁移表.php
... 

private function migration_cms_users() {
   ... 
   $bar = $this->output->createdProgressBar($this->getNumberRows($db));  // Error (1)
   ...
   $bar = new ProgressBar($output, $this->getNumberRows($db));  // Example on [Symfony][1] Undefined variable: output 

}


(1) [ErrorException]                                           
  Undefined property: Abkrim\Setdart\MigrateTables::$output
(2) [ErrorException]            
  Undefined variable: output  

最佳答案

如果你在 Symfony 上工作,你可以像这样定义你的输出:

use Symfony\Component\Console\Helper\ProgressBar;
use Symfony\Component\Console\Output\ConsoleOutput;

$output = new ConsoleOutput();
$progress = new ProgressBar($output, 50);
$progress->start();

foreach($vars as $var){
    $progress->advance();
}

$progress->finish();

关于php - 如何在命令的类上显示进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38283157/

相关文章:

php - Curl 给出与普通浏览器不同的响应

php - Laravel 中批量分配的风险

laravel - Cookie 的两种类型

laravel - 带有资源 Controller 的路由前缀 - Laravel 5.5

mysql - 具有条件和限制的 Symfony/Doctrine ManyToMany

symfony - 路由,参数数量不限

php - Symfony 从列中的下拉列表更新

javascript - backone-使用嵌套 View 保存到数据库

php - 如何在创建蛋糕烘焙模板 cakephp 3 时跳过选定的表格列

php - 为什么网站倾向于使用随机id :s on database tables?