Vse o WEB
Информация и размышления о Web технологиях

Что нового в Symfony 4.4: Horizontal Tables and Definition Lists в консольных командах

Компонент Console включает некоторые функции для вывода таблиц и их настройки различными способами. В Symfony 4.4 добавлены новые типы таблиц.

 

Horizontal table

Имеем следующую таблицу:

<?php

use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Helper\Table;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
// ...

class SomeCommand extends Command
{
    public function execute(InputInterface $input, OutputInterface $output)
    {
        $table = new Table($output);
        $table
            ->setHeaders(['ISBN', 'Title', 'Author'])
            ->setRows([
                ['99921-58-10-7', 'Divine Comedy', 'Dante Alighieri'],
                ['9971-5-0210-0', 'A Tale of Two Cities', 'Charles Dickens'],
                ['960-425-059-0', 'The Lord of the Rings', 'J. R. R. Tolkien'],
                ['80-902734-1-6', 'And Then There Were None', 'Agatha Christie'],
            ])
        ;
        $table->render();
    }
}

 

Она выводится в консоли как:

+---------------+--------------------------+------------------+
| ISBN          | Title                    | Author           |
+---------------+--------------------------+------------------+
| 99921-58-10-7 | Divine Comedy            | Dante Alighieri  |
| 9971-5-0210-0 | A Tale of Two Cities     | Charles Dickens  |
| 960-425-059-0 | The Lord of the Rings    | J. R. R. Tolkien |
| 80-902734-1-6 | And Then There Were None | Agatha Christie  |
+---------------+--------------------------+------------------+

 

Если вы вызываете новый метод setHorizontal(bool $horizontal = true), таблица преобразуется в «горизонтальную таблицу», где данные отображаются в строках, а не в столбцах:

$table
    ->setHeaders(['ISBN', 'Title', 'Author'])
    ->setRows([
        // ... строки ...
    ])
    ->setHorizontal()
;
   

 

+--------+-----------------+----------------------+-----------------------+--------------------------+
| ISBN   | 99921-58-10-7   | 9971-5-0210-0        | 960-425-059-0         | 80-902734-1-6            |
| Title  | Divine Comedy   | A Tale of Two Cities | The Lord of the Rings | And Then There Were None |
| Author | Dante Alighieri | Charles Dickens      | J. R. R. Tolkien      | Agatha Christie          |
+--------+-----------------+----------------------+-----------------------+--------------------------+

 

Если использовать Symfony стили для команд, также можно вызывать horizontalTable() :

<?php

use Symfony\Component\Console\Style\SymfonyStyle;

protected function execute(InputInterface $input, OutputInterface $output)
{
    $io = new SymfonyStyle($input, $output);
    $io->horizontalTable(
        ['ISBN', 'Title', 'Author'],
        [
            // ... строки ...
        ]
    );
}

 

Definition Lists

В Symfony 4.4 также добавлена поддержка «списков определений», которые представляют собой набор пар ключ-значение, аналогично HTML <dl>. Списки определений Symfony более гибкие, поскольку они могут включать заголовки, разделители и т. д.

use Symfony\Component\Console\Helper\TableSeparator;

$io->definitionList(
    ['Version' => '4.4.0'],
    ['Long-Term Support' => 'Yes'],
    new TableSeparator(),
    'Timeline',
    ['End of maintenance' => '11/2022'],
    ['End of life' => '11/2023']
);

 

Данный пример будет отображен в консоли следующим образом:

-------------------- ---------
 Version              4.4.0
 Long-Term Support    Yes
-------------------- ---------
 Timeline
 End of maintenance   11/2022
 End of life          11/2023
-------------------- ---------

 

Оригинал статьи: https://symfony.com/blog/new-in-symfony-4-4-horizontal-tables-and-definition-lists-in-console-commands

Наверх