khalyomede / console-reporter
同时在控制台显示进度条和日志。
v0.3.0
2018-10-23 21:12 UTC
Requires
- php: >=7.2.0
README
摘要
安装
composer require --dev khalyomede/console-reporter:0.*
使用示例
示例 1:简单使用案例
require(__DIR__ . '/../vendor/autoload.php'); use Khalyomede\ConsoleReporter as Reporter; $reporter = new Reporter; $reporter->setMaxEntries(24); foreach( range(1, 24) as $integer ) { $sleepTimeInMicroseconds = rand(5000, 500000); usleep($sleepTimeInMicroseconds); if( $integer % 8 === 0 ) { $reporter->info("test #$integer in progression..."); } $reporter->report(); $reporter->advance(); }
$ php example/example-1.php 2018-09-16 08:45:29.595600 [INFO] test #8 in progression... 2018-09-16 08:45:32.205500 [INFO] test #16 in progression... 2018-09-16 08:45:34.570100 [INFO] test #24 in progression... 24 / 24 ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ 100 %
示例 2:使用内置进度条样式
require(__DIR__ . '/../vendor/autoload.php'); use Khalyomede\ConsoleReporter as Reporter; use Khalyomede\Style\ModernRounded; $reporter = new Reporter; $reporter->setMaxEntries(24); $reporter->setStyle(ModernRounded::class); foreach( range(1, 24) as $integer ) { $sleepTimeInMicroseconds = rand(5000, 500000); usleep($sleepTimeInMicroseconds); if( $integer % 8 === 0 ) { $reporter->info("test #$integer in progression..."); } $reporter->report(); $reporter->advance(); }
$ php example/example-2.php
2018-09-29 18:07:40.433600 [INFO] test #8 in progression...
2018-09-29 18:07:42.810300 [INFO] test #16 in progression...
2018-09-29 18:07:45.291100 [INFO] test #24 in progression...
24 / 24 [●●●●●●●●●●●●●●●●●●●●●●●●] 100 %
示例 3:使用自定义进度条样式
require(__DIR__ . '/../vendor/autoload.php'); use Khalyomede\ConsoleStylable; use Khalyomede\ConsoleReporter as Reporter; class ModernStar implements ConsoleStylable { public static function progressingCharacter(): string { return '✧'; } public static function progressedCharacter(): string { return '✦'; } public static function startCharacter(): string { return '['; } public static function endCharacter(): string { return ']'; } } const MAX = 24; $numbers = range(1, MAX); $reporter = new Reporter; $reporter->setMaxEntries(MAX); $reporter->setStyle(ModernStar::class); foreach( $numbers as $number ) { $microseconds = rand(50000, 500000); usleep($microseconds); if( $number % 8 === 0 ) { $reporter->info("running iteration #$number"); } $reporter->report(); $reporter->advance(); }
$ php example/example-3.php 2018-09-29 20:34:16.945300 [INFO] running iteration #8 2018-09-29 20:34:18.934700 [INFO] running iteration #16 2018-09-29 20:34:21.071200 [INFO] running iteration #24 24 / 24 [✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦✦] 100 %
示例 4:使用图标显示日志
require(__DIR__ . '/../vendor/autoload.php'); use Khalyomede\ConsoleReporter as Reporter; $reporter = new Reporter; $reporter->setMaxEntries(24); $reporter->displaySeverityWithIcons(); foreach( range(1, 24) as $integer ) { $sleepTimeInMicroseconds = rand(5000, 500000); usleep($sleepTimeInMicroseconds); if( $integer % 8 === 0 ) { $reporter->info("test #$integer in progression..."); } $reporter->report(); $reporter->advance(); }
$ php example/example-4.php 2018-10-04 21:42:31.842600 ⓘ test #8 in progression... 2018-10-04 21:42:33.992700 ⓘ test #16 in progression... 2018-10-04 21:42:35.393700 ⓘ test #24 in progression... 24 / 24 ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ 100 %
示例 5:强制设置进度条大小
require(__DIR__ . '/../vendor/autoload.php'); use Khalyomede\ConsoleReporter as Reporter; $reporter = new Reporter; $reporter->setMaxEntries(10); $reporter->setProgressBarSize(30); $numbers = range(0, 9); foreach( $numbers as $number ) { $sleepTimeInMicroSeconds = rand(50000, 500000); usleep($sleepTimeInMicroSeconds); $reporter->report(); $reporter->advance(); }
$ php example/example-5.php 10 / 10 ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ 100 %
可用的内置进度条样式
现代圆角
2018-09-30 14:52:31.158200 [INFO] test #8 in progression... 2018-09-30 14:52:32.366100 [INFO] test #16 in progression... 2018-09-30 14:52:33.885100 [INFO] test #24 in progression... 24 / 24 [●●●●●●●●●●●●●●●●●●●●●●●●] 100 %
现代矩形
2018-09-30 14:55:05.430200 [INFO] test #8 in progression... 2018-09-30 14:55:07.795900 [INFO] test #16 in progression... 2018-09-30 14:55:09.755300 [INFO] test #24 in progression... 24 / 24 [◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼] 100 %
支持的shell
没有看到您的操作系统或shell?这意味着它尚未经过测试。
如果您想在上面的配置之外测试它,我们将非常欢迎。只需填写一个问题。
PowerShell配置
请确认您的字体配置没有设置为“光栅字体”
将其更改为除“光栅字体”之外的内容。现在,某些进度条中使用的字符应该可以正确显示。
致谢
PowerShell字体图片来自4sysops