Удобный вывод табличной информации в консоль

Тема в разделе "PHP", создана пользователем babahalki, 22 дек 2017.

Модераторы: latteo
  1. babahalki

    babahalki

    Регистр.:
    6 май 2016
    Сообщения:
    246
    Симпатии:
    98
    Всем привет. Недавно я более активно начал использовать php через консоль в связи с необходимостью выполнения модульных тестов в библиотеке PHPUnit.

    За время работы я очень привык к отладке своего кода через браузер для чего я сделал специальную библиотеку, которая умеет записывать события, а потом выводить их в красивой табличной форме. Я так привык к такому способу отладки, что каждый очередной анализ лога из консоли становился для меня настоящей пыткой. Во время самой разработки я запускаю тесты маленькими частями прямо из phpstorm, а когда надо тестировать сразу и все - использую bash.

    Я немного помучился со стандартными очень скудными сообщениями, которые выводит туда сам phpunit и прикрутил свою библиотеку, чтобы она могла выводить данные в консоль в виде простого текста без HTML таблицы. Стало получше, но все равно когда записей лога с десяток искать что-то в построчном выводе все равно не удобно.

    В итоге я решил прокачать свой дебагер, научив его рисовать таблицы в консоль. Порывшись в сети я нашел несколько нужных библиотек, но все они что-то делали неправильно. Ни одна из испробованных мной библиотек не могла выводить красиво таблицу с многострочными ячейками. В итоге я решил запилить свой лунапарк.

    Пришлось попотеть, но мне удалось.
    Либа умеет рисовать псевдографическую таблицу ascii произвольной ширины, которая задается при создании класса. Использовать либу очень просто:

    PHP:
    <?php

    $a 
    = array(
    array(
    'one'=>1,'two'=>2,'three'=>3),
    array(
    'one'=>1,'two'=>2,'three'=>3),
    );      
    require_once(
    dirname(__FILE__).'/Table2ascii.php');     
    $c = new Table2ascii(170);
    print 
    $c->draw($a);

    СКАЧАТЬ можно отсюда:
    https://github.com/legale/table2ascii

    upload_2017-12-22_18-51-45.png
     
    Последнее редактирование: 22 дек 2017