serendipity_hq/component-text-matrix

一个PHP库,用于将表示矩阵的数组渲染为纯文本表格。

3.0.5 2022-08-02 21:09 UTC

README

Serendipity HQ 文本矩阵

将表示数据的矩阵数组渲染成纯文本表格。

支持

测试平台

当前状态

Coverage Maintainability Rating Quality Gate Status Reliability Rating Security Rating Technical Debt Vulnerabilities

Phan PHPStan PSalm PHPUnit Composer PHP CS Fixer Rector

功能

  • 基于每列的四个方向填充(顶部、右侧、底部和左侧),遵循CSS语法;
  • 最大列宽,有剪切单词或保持单词完整性的可能性(如word-wrap CSS属性);
  • 基于每列的左对齐和右对齐;
  • 可自定义的垂直、水平和交叉分隔符,适用于标题和内容;
  • 标题(第一行传递)的默认样式不同;
  • 可以移除标题的第一行分隔线;

你喜欢这个库吗?
留下 ★

或者运行
composer global require symfony/thanks && composer thanks
来感谢你当前项目中使用的所有库,包括这个!

通过Composer安装Serendipity HQ Text Matrix

$ composer require serendipity_hq/component-text-matrix

该库遵循http://semver.org/版本规范。

如何使用Serendipity HQ Text Matrix

component-text-matrix允许在将数据渲染为纯文本表格时具有很大的灵活性。您可以自定义生成的表格的许多方面。

如果缺少某些功能,您可以打开一个问题并集成它,然后提交一个pull request。请记住测试您的新功能:未测试的功能将不会被合并。

基本用法

要使用component-text-matrix,您只需要一个表示矩阵的数组

// The array containing the data
$data = [
    [
        'title' => '20.000 Leghe sotto i mari',
        'author' => 'Jules Verne',
        'review' => 'Una misteriosa creatura marina che affonda navi da guerra di ogni paese, la scoperta di uno straordinario mezzo meccanico - il sommergibile Nautilus capace di esplorare le profondità degli abissi marini, il suo comandante, il Capitano Nemo, un uomo nobile e generoso che cela però nell\'animo un insopprimibile desiderio di odio e di vendetta, il professor Arronax, il suo servitore Consiglio e il fiociniere Ned Land. E poi le meraviglie di un continente sconosciuto - l\'oceano e i suoi abissi - le esplorazioni attraverso tutti i mari, le lotte contro mostri spaventosi, la fede in una scienza che dovrebbe offrire all\'uomo un progresso inarrestabile, il desiderio di libertà che anima tutti i personaggi del libro.'
    ],
    [
        'title' => 'Il signore degli anelli:        La compagnia dell\'anello',
        'author' => 'J. R. R. Tolkien',
        'review' => 'In questo primo romanzo della trilogia di Tolkien, il lettore conosce gli Hobbit, minuscoli esseri saggi e longevi. Frodo, venuto in possesso dell\'Anello del Potere, è costretto a partire per il paese delle tenebre. Un gruppo di Hobbit lo accompagna e, strada facendo, si associano alla compagnia altri esseri: Elfi, Nani e Uomini, anch\'essi legati al destino di Frodo. Le tappe del cammino li conducono attraverso molte esperienze diverse, finché la scomparsa di Gandalf, trascinato negli abissi da un\'orrenda creatura, li lascia senza guida. Così si scioglie la Compagnia dell\'Anello e i suoi membri si disperdono, minacciati da forze tenebrose, mentre la meta sembra disperatamente allontanarsi.'
    ],
    [
        'title' => 'Il leviatano',
        'author' => 'T. Hobbes contraddittorietà',
        'review' => 'Vitale rappresentazione dello Stato moderno, longeva e barocca figura di pensiero politico nelle sembianze di un mostro biblico, il "Leviatano" è certamente l\'opera filosofica più dibattuta degli ultimi quattro secoli: vi sono contenute le radici del moderno Stato di diritto e di esperienze politiche antiassolutistiche come la Rivoluzione francese, elementi necessari a comprendere le vicende più recenti delle democrazie europee. Pubblicato per la prima volta nel 1651, al termine di un\'epoca che aveva visto l\'Europa dilaniata da guerre civili e di religione, il "Leviatano" definisce tutte le logiche e le categorie della modernità, inclusa la loro duplicità e contraddittorietà. Perché reca in sé non solo un\'architettura di istituzioni, ma anche un campo di conflitti, non solo la stabilità, ma anche la possibilità del fallimento. Superare la forma Stato descritta in queste pagine resta una delle grandi sfide del XXI secolo.'
    ]
];

$table = new \SerendipityHQ\Component\component-text-matrix\component-text-matrix($data);

echo '<pre>';
echo $table->render();
echo '</pre>';

这将渲染如下表格

+-------------------------------------------------+---------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|20.000 Leghe sotto i mari                        |Jules Verne                |Una misteriosa creatura marina che affonda navi da guerra di ogni paese, la scoperta di uno straordinario mezzo meccanico - il sommergibile Nautilus capace di esplorare le profondità degli abissi marini, il suo comandante, il Capitano Nemo, un uomo nobile e generoso che cela però nell'animo un insopprimibile desiderio di odio e di vendetta, il professor Arronax, il suo servitore Consiglio e il fiociniere Ned Land. E poi le meraviglie di un continente sconosciuto - l'oceano e i suoi abissi - le esplorazioni attraverso tutti i mari, le lotte contro mostri spaventosi, la fede in una scienza che dovrebbe offrire all'uomo un progresso inarrestabile, il desiderio di libertà che anima tutti i personaggi del libro.                                                                                                                                                                                                                          |
+-------------------------------------------------+---------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|Il signore degli anelli: La compagnia dell'anello|J. R. R. Tolkien           |In questo primo romanzo della trilogia di Tolkien, il lettore conosce gli Hobbit, minuscoli esseri saggi e longevi. Frodo, venuto in possesso dell'Anello del Potere, è costretto a partire per il paese delle tenebre. Un gruppo di Hobbit lo accompagna e, strada facendo, si associano alla compagnia altri esseri: Elfi, Nani e Uomini, anch'essi legati al destino di Frodo. Le tappe del cammino li conducono attraverso molte esperienze diverse, finché la scomparsa di Gandalf, trascinato negli abissi da un'orrenda creatura, li lascia senza guida. Così si scioglie la Compagnia dell'Anello e i suoi membri si disperdono, minacciati da forze tenebrose, mentre la meta sembra disperatamente allontanarsi.                                                                                                                                                                                                                                            |
+-------------------------------------------------+---------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|Il leviatano                                     |T. Hobbes contraddittorietà|Vitale rappresentazione dello Stato moderno, longeva e barocca figura di pensiero politico nelle sembianze di un mostro biblico, il "Leviatano" è certamente l'opera filosofica più dibattuta degli ultimi quattro secoli: vi sono contenute le radici del moderno Stato di diritto e di esperienze politiche antiassolutistiche come la Rivoluzione francese, elementi necessari a comprendere le vicende più recenti delle democrazie europee. Pubblicato per la prima volta nel 1651, al termine di un'epoca che aveva visto l'Europa dilaniata da guerre civili e di religione, il "Leviatano" definisce tutte le logiche e le categorie della modernità, inclusa la loro duplicità e contraddittorietà. Perché reca in sé non solo un'architettura di istituzioni, ma anche un campo di conflitti, non solo la stabilità, ma anche la possibilità del fallimento. Superare la forma Stato descritta in queste pagine resta una delle grandi sfide del XXI secolo.|
+-------------------------------------------------+---------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

填充、列最大宽度和单词换行

传递一些选项到render()方法,您可以自定义您的纯文本表格

$options = [
    'columns' => [
        'review' => [
            'max_width' => 50
        ],
        'title' => [
            'max_width' => 20,
            // Equal to CSS word-break: break-all
            'cut' => true
        ]
    ],
    'cells_padding' => 5
];

$table = new \SerendipityHQ\Component\component-text-matrix\component-text-matrix($data);

echo '<pre>';
echo $table->render($options);
echo '</pre>';

这将生成以下表格

+------------------------------+-------------------------------------+------------------------------------------------------------+
|                              |                                     |                                                            |
|                              |                                     |                                                            |
|                              |                                     |                                                            |
|                              |                                     |                                                            |
|                              |                                     |                                                            |
|     20.000 Leghe sotto i     |     Jules Verne                     |     Una misteriosa creatura marina che affonda navi da     |
|     mari                     |                                     |     guerra di ogni paese, la scoperta di uno               |
|                              |                                     |     straordinario mezzo meccanico - il sommergibile        |
|                              |                                     |     Nautilus capace di esplorare le profondità degli       |
|                              |                                     |     abissi marini, il suo comandante, il Capitano          |
|                              |                                     |     Nemo, un uomo nobile e generoso che cela però          |
|                              |                                     |     nell'animo un insopprimibile desiderio di odio e       |
|                              |                                     |     di vendetta, il professor Arronax, il suo              |
|                              |                                     |     servitore Consiglio e il fiociniere Ned Land. E        |
|                              |                                     |     poi le meraviglie di un continente sconosciuto -       |
|                              |                                     |     l'oceano e i suoi abissi - le esplorazioni             |
|                              |                                     |     attraverso tutti i mari, le lotte contro mostri        |
|                              |                                     |     spaventosi, la fede in una scienza che dovrebbe        |
|                              |                                     |     offrire all'uomo un progresso inarrestabile, il        |
|                              |                                     |     desiderio di libertà che anima tutti i personaggi      |
|                              |                                     |     del libro.                                             |
|                              |                                     |                                                            |
|                              |                                     |                                                            |
|                              |                                     |                                                            |
|                              |                                     |                                                            |
|                              |                                     |                                                            |
+------------------------------+-------------------------------------+------------------------------------------------------------+
|                              |                                     |                                                            |
|                              |                                     |                                                            |
|                              |                                     |                                                            |
|                              |                                     |                                                            |
|                              |                                     |                                                            |
|     Il signore degli         |     J. R. R. Tolkien                |     In questo primo romanzo della trilogia di Tolkien,     |
|     anelli: La compagnia     |                                     |     il lettore conosce gli Hobbit, minuscoli esseri        |
|     dell'anello              |                                     |     saggi e longevi. Frodo, venuto in possesso             |
|                              |                                     |     dell'Anello del Potere, è costretto a partire per      |
|                              |                                     |     il paese delle tenebre. Un gruppo di Hobbit lo         |
|                              |                                     |     accompagna e, strada facendo, si associano alla        |
|                              |                                     |     compagnia altri esseri: Elfi, Nani e Uomini,           |
|                              |                                     |     anch'essi legati al destino di Frodo. Le tappe del     |
|                              |                                     |     cammino li conducono attraverso molte esperienze       |
|                              |                                     |     diverse, finché la scomparsa di Gandalf,               |
|                              |                                     |     trascinato negli abissi da un'orrenda creatura, li     |
|                              |                                     |     lascia senza guida. Così si scioglie la Compagnia      |
|                              |                                     |     dell'Anello e i suoi membri si disperdono,             |
|                              |                                     |     minacciati da forze tenebrose, mentre la meta          |
|                              |                                     |     sembra disperatamente allontanarsi.                    |
|                              |                                     |                                                            |
|                              |                                     |                                                            |
|                              |                                     |                                                            |
|                              |                                     |                                                            |
|                              |                                     |                                                            |
+------------------------------+-------------------------------------+------------------------------------------------------------+
|                              |                                     |                                                            |
|                              |                                     |                                                            |
|                              |                                     |                                                            |
|                              |                                     |                                                            |
|                              |                                     |                                                            |
|     Il leviatano             |     T. Hobbes contraddittorietà     |     Vitale rappresentazione dello Stato moderno,           |
|                              |                                     |     longeva e barocca figura di pensiero politico          |
|                              |                                     |     nelle sembianze di un mostro biblico, il               |
|                              |                                     |     "Leviatano" è certamente l'opera filosofica più        |
|                              |                                     |     dibattuta degli ultimi quattro secoli: vi sono         |
|                              |                                     |     contenute le radici del moderno Stato di diritto e     |
|                              |                                     |     di esperienze politiche antiassolutistiche come la     |
|                              |                                     |     Rivoluzione francese, elementi necessari a             |
|                              |                                     |     comprendere le vicende più recenti delle               |
|                              |                                     |     democrazie europee. Pubblicato per la prima volta      |
|                              |                                     |     nel 1651, al termine di un'epoca che aveva visto       |
|                              |                                     |     l'Europa dilaniata da guerre civili e di               |
|                              |                                     |     religione, il "Leviatano" definisce tutte le           |
|                              |                                     |     logiche e le categorie della modernità, inclusa        |
|                              |                                     |     la loro duplicità e contraddittorietà. Perché          |
|                              |                                     |     reca in sé non solo un'architettura di                 |
|                              |                                     |     istituzioni, ma anche un campo di conflitti, non       |
|                              |                                     |     solo la stabilità, ma anche la possibilità del         |
|                              |                                     |     fallimento. Superare la forma Stato descritta in       |
|                              |                                     |     queste pagine resta una delle grandi sfide del XXI     |
|                              |                                     |     secolo.                                                |
|                              |                                     |                                                            |
|                              |                                     |                                                            |
|                              |                                     |                                                            |
|                              |                                     |                                                            |
|                              |                                     |                                                            |
+------------------------------+-------------------------------------+------------------------------------------------------------+

自定义标题和分隔符

$data = [
    [
        'quantity' => 'Quantity',
        'description' => 'Description',
        'price' => 'Price'
    ],
    [
        'quantity' => '1 month',
        'description' => 'TrustBack.Me:       Base plan' . PHP_EOL . 'From Sep 26 2016 to Oct 26 2016.',
        'price' => '$29.00'
    ],
    [
        'quantity' => '',
        'description' => 'Credit applied',
        'price' => '-$29.00'
    ]
];

// The array containing the data
$options = [
    'has_header' => true,
    'cells_padding' => [0, 3],
    'sep_head_v' => ' ',
    'sep_head_x' => ' ',
    'sep_head_h' => '-',
    'sep_v' => ' ',
    'sep_x' => ' ',
    'sep_h' => ' ',
    'show_head_top_sep' => false,
    'columns' => [
        'description' => [
            'max_width' => 40,
            // Equal to CSS word-break: break-all
            'cut' => true
        ],
        'price' => [
            'align' => 'right',
            'min_width' => 15
        ]
    ]
];

$table = new \SerendipityHQ\Component\component-text-matrix\component-text-matrix($data);

echo '<pre>';
echo $table->render($options);
echo '</pre>';

这是生成的表格

    Quantity       Description                                      Price
 -------------- -------------------------------------- ---------------------
    1 month        TrustBack.Me: Base plan                         $29.00
                   From Sep 26 2016 to Oct 26 2016.

                   Credit applied                                 -$29.00

最后说明

  • 使用cut选项,将其设置为true或false以确定单词是否可以断开(参见wordwrap PHP函数
  • 填充遵循CSS padding规则,因此:如果填充属性有四个值
    • padding: 25px 50px 75px 100px;
      • 顶部填充是25px
      • 右侧填充是50px
      • 底部填充是75px
      • 左侧填充是100px
    • 如果填充属性有三个值
      • 顶部填充是25px
      • padding: 25px 50px 75px;
      • 左右填充是50px
    • 底部填充是75px
      • 如果填充属性有两个值
      • padding: 25px 50px;
    • 顶部和底部填充是25px
      • 左右填充是50px

更多信息,请参阅 tests 文件夹中的单元测试,方法 resolveOptions()(其中验证所有选项)或示例。

你喜欢这个库吗?
留下 ★

或者运行
composer global require symfony/thanks && composer thanks
来感谢你当前项目中使用的所有库,包括这个!