dekor / php-array-table
PHP 库,用于将关联数组以文本表的形式打印(类似于 mysql 终端控制台)
2.0
2023-02-10 10:13 UTC
Requires
- php: >=5.6.0
- ext-mbstring: *
Requires (Dev)
- phpunit/phpunit: ^10
This package is auto-updated.
Last update: 2024-09-19 12:57:11 UTC
README
PHP 类,允许将 PHP 关联数组转换为酷炫的 ASCII 表。
快速文档
https://deniskoronets.github.io/php-array-table/
安装
只需运行 composer require
composer require dekor/php-array-table
或在 composer.json 中添加
"dekor/php-array-table": "^2.0"
使用方法
use dekor\ArrayToTextTable; $data = [ [ 'id' => 1, 'name' => 'Denis Koronets', 'role' => 'php developer', ], [ 'id' => 2, 'name' => 'Maxim Ambroskin', 'role' => 'java developer', ], [ 'id' => 3, 'name' => 'Andrew Sikorsky', 'role' => 'php developer', ] ]; echo (new ArrayToTextTable($data))->render();
将输出以下内容
+----+-----------------+----------------+ | id | name | role | +----+-----------------+----------------+ | 1 | Denis Koronets | php developer | | 2 | Maxim Ambroskin | java developer | | 3 | Andrew Sikorsky | php developer | +----+-----------------+----------------+
格式化器(自 v2 版本起)
版本 2 引入了一个新功能,允许通过应用过滤器预先和后处理列数据。
您可以通过扩展 BaseColumnFormatter
并实现抽象方法来开发自己的格式化器。
内置格式化器列表
AlignFormatter
- 允许设置内部列的文本对齐(对于数字很有用)
use dekor\ArrayToTextTable; use dekor\formatters\AlignFormatter; $data = [ [ 'left' => 2, 'center' => 'Dummy one', 'right' => 14.33, ], [ 'left' => 3, 'center' => 'Another great day for a great inventers!', 'right' => 1, ], ]; $builder = new ArrayToTextTable($data); $builder->applyFormatter(new AlignFormatter(['center' => 'center', 'right' => 'right'])); echo $builder->render();
输出
+------+------------------------------------------+-------+ | left | center | right | +------+------------------------------------------+-------+ | 2 | Dummy one | 14.33 | | 3 | Another great day for a great inventers! | 1 | +------+------------------------------------------+-------+
SprintfFormatter
- 允许使用 sprintf 函数在渲染之前格式化列值(例如:%01.3f)
use dekor\ArrayToTextTable; use dekor\formatters\SprintfFormatter; $data = [ [ 'left' => 1, 'right' => 2.89, ] ]; $builder = new ArrayToTextTable($data); $builder->applyFormatter(new SprintfFormatter(['left' => '%01.3f', 'right' => '%03.3f'])); echo $builder->render();
输出
+-------+-------+ | left | right | +-------+-------+ | 1.000 | 2.890 | +-------+-------+
ColorFormatter
- 允许用特定颜色突出显示文本(仅在终端中有效)
use dekor\ArrayToTextTable; use dekor\formatters\ColorFormatter; $data = [ ['test' => 1], ['test' => -1], ]; $builder = new ArrayToTextTable($data); $builder->applyFormatter(new ColorFormatter(['test' => fn ($value) => $value > 0 ? 'Red' : 'Green'])); echo $builder->render() . PHP_EOL;
输出
允许的颜色列表(请参阅 ColorFormatter::$colors
)
- 黑色
- 深灰色
- 红色
- 浅红色
- 绿色
- 浅绿色
- 棕色
- 黄色
- 蓝色
- 浅蓝色
- 品红色
- 浅品红色
- 青色
- 浅青色
- 浅灰色
- 白色