guiguiboy / php-cli-progress-bar
PHP CLI 脚本进度条
Requires
- php: >=5.3.0
- ext-mbstring: *
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,这样您就不需要扩展管理器来添加自定义替换规则
待办事项
- 向开发者请求反馈