dekor/php-array-table

PHP 库,用于将关联数组以文本表的形式打印(类似于 mysql 终端控制台)

2.0 2023-02-10 10:13 UTC

This package is auto-updated.

Last update: 2024-09-19 12:57:11 UTC


README

packagist downloads min php version license tests code coverage badge lines of code

PHP 类,允许将 PHP 关联数组转换为酷炫的 ASCII 表。

BlueYellow 乌克兰 ❤

快速文档

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;

输出

img.png

允许的颜色列表(请参阅 ColorFormatter::$colors

  • 黑色
  • 深灰色
  • 红色
  • 浅红色
  • 绿色
  • 浅绿色
  • 棕色
  • 黄色
  • 蓝色
  • 浅蓝色
  • 品红色
  • 浅品红色
  • 青色
  • 浅青色
  • 浅灰色
  • 白色

我们的赞助商列表