Repository URL to install this package:
|
Version:
6.2.0 ▾
|
digitalascetic/batch-util
/
ProgressBarMonitor.php
|
|---|
<?php
/**
* Created by IntelliJ IDEA.
* User: martino
* Date: 08/03/17
* Time: 01:04
*/
namespace DigitalAscetic\BatchUtil;
use ReflectionClass;
use Symfony\Component\Console\Helper\ProgressBar;
/**
* Class ProgressBarMonitor
* @package DigitalAscetic\BatchUtil
*/
class ProgressBarMonitor extends AbstractProgressMonitor
{
/** @var ProgressBar */
private ProgressBar $progressBar;
/**
* ProgressBarMonitor constructor.
* @param ProgressBar $progressBar
*/
public function __construct(ProgressBar $progressBar)
{
parent::__construct();
$this->progressBar = $progressBar;
}
public function start($data = null): void
{
$this->progressBar->start();
$this->started = true;
}
public function advance($data = null): void
{
$this->progressBar->advance();
}
public function finish($data = null): void
{
$this->progressBar->finish();
$this->finished = true;
}
public function message($data = null): void
{
$this->progressBar->setMessage($data);
}
/**
* @param int $count
*
* @throws \ReflectionException
*/
public function setTotalSteps(int $count = 0): void
{
// ProgressBar setMaxSteps method is private...
$reflection = new ReflectionClass($this->progressBar);
$method = $reflection->getMethod('setMaxSteps');
$method->setAccessible(true);
$method->invoke($this->progressBar, $count);
$this->setDefaultRedrawFrequency();
}
public function setRedrawFrequency(float $freq)
{
$this->progressBar->setRedrawFrequency($freq);
}
protected function setDefaultRedrawFrequency()
{
$this->progressBar->setRedrawFrequency($this->progressBar->getMaxSteps() / 1000);
}
}