guiguiboy/php-cli-progress-bar

此包已被废弃,不再维护。未建议替代包。

PHP CLI 脚本进度条

0.0.4 2014-11-19 13:12 UTC

This package is not auto-updated.

Last update: 2022-03-06 01:18:42 UTC


README

A PHP5 CLI Progress bar Version 0.0.4

要求

PHP >= 5.3

工作原理

存在一个命名空间 ProgressBar,其中包含两个类:Manager 和 Registry。

Manager 负责管理进度条。该类的每个实例都与一个 Registry 对象相关联。每次 Manager 需要保存一个度量时,它都会存储在这个对象中。

当请求显示时,脚本使用字符串格式并遍历所有替换规则。替换由闭包处理。

进度条有以下默认输出:%current%/%max% [%bar%] %percent%% %eta%

它是可配置的。您也可以在处理批处理脚本时更改它。

内置变量替换包括:

  • %current%:当前元素
  • %max%:元素数量
  • %bar%:进度条
  • %percent%:百分比进度
  • %eta%:剩余时间估计

Manager 构造函数参数

  • current:初始步骤
  • max:过程中的步骤数量
  • width:行的最大宽度(默认:80)
  • doneBarElementCharacter:用于识别进度条中已完成进度的字符(默认:=)
  • remainingBarElementCharacter:用于识别进度条中剩余进度的字符(默认:-)
  • currentPositionCharacter:用于识别进度条中当前位置的字符(默认:>)

如何使用

快速入门

在脚本开头添加 include 语句(如果您没有自动加载器)

<?php
require_once 'ProgressBar/Manager.php';
require_once 'ProgressBar/Registry.php';

$progressBar = new \ProgressBar\Manager(0, 10);

for ($i = 0; $i <= 10; $i++)
{
    $progressBar->update($i);
    sleep(1);
}

将输出:

1/10 [===>----------------------------------------------] 10.00% 00:00:09

当您想要遍历一个集合时,甚至不需要跟踪计数器

foreach ($array as $element)
{
    // process element
    $progressBar->advance();
}

配置

更改输出

使用 setFormat() 方法

$progressBar->setFormat('%current% |%bar%| %max%');
$progressBar->update(1);

将输出:

1|>-------------------------------------------------------------------| 10

更改最大长度

最大长度在构造函数中指定

$pb = new \ProgressBar\Manager(0, 20, 120);
$progressBar->update(1);

将输出:

1/20 [====>----------------------------------------------------------------------------------------] 5.00% 00:00:00

更改进度条样式

使用构造函数中指定的参数

$pb = new \ProgressBar\Manager(0, 20, 120, '-', ' ', ')');
$pb->update(5);

将输出:

5/20 [-----------------------) ] 25.00% 00:00:00

扩展

添加自定义替换规则

您可以为替换添加自定义变量。您必须使用 addReplacementRule 方法,并指定优先级、标签和闭包。请注意,进度条的长度是在最后评估的,因此输出宽度将扩展到您指定的宽度。因此,使用高优先级的 %bar% 是一个好习惯。

以下是一个示例,如果您想添加新的替换规则应该这样做。

<?php

use ProgresBar;

$pb = new Manager(0, 213);
$pb->setFormat('Progress : %current%/%max% [%bar%] %foo%');
$pb->addReplacementRule('%foo%', 70, function ($buffer, $registry) {return 'OK!';});
$pb->update(1);

将输出

进度:1/213 [>---------------------------------------------------] OK!

变更日志

0.0.3 -> 0.0.4

  • 将 RuntimeExceptions 改为 InvalidArgumentExceptions
  • 添加了 advance() 方法用于递增进度条
  • 禁止设置超过预期的进度值

0.0.2 -> 0.0.3

  • 添加了 composer 支持
  • 为 Manager 和注册表添加了单元测试

0.0.1 -> 0.0.2

  • 更改目录结构以添加命名空间
  • 更改了优先级行为
  • 添加了新的公共方法 addReplacementRule,这样您就不需要扩展管理器来添加自定义替换规则

待办事项

  • 向开发者请求反馈