Содержание


Table


таблица, ЗФ2, Zend Framework 2, ZF2, ру, ru




Компонент Zend\Text\Table – разработан для создания текстовых таблиц на лету с использованием различных декораторов. Это может быть полезным, если Вы например хотите передать структуру чего то по почте при использовании моноширинного шрифта или отобразить структурированную информацию в таблиц при использовании CLI.

 

Важно: Кодировка.
По умолчанию используется кодировка UTF-8. При необходимости использовать другую кодировку её нужно передать в конструктор или в метод класса «Zend\Text\Table\Column.». Если же у Вас используется другая кодировка везде, то можете задать её для процессов ввода через метод «Zend\Text\Table\Table::setInputCharset($charset)». Для выходных данных: «Zend\Text\Table\Table::setOutputCharset($charset)».

 

Zend\Text\Table\Table состоит из строк, которые содержат колонки, создающиеся с помощью Zend\Text\Table\Row и Zend\Text\Table\Column. При создании таблицы у Вас есть возможность передать массив опций:

 

- columnWidths (обязателен) – массив, определяющий ширину всех колонок в символах.

- decorator – Декоратор, используемый для границ таблицы. По умолчанию стоит «unicode», однако можно задать «ascii» или пользовательский объект декорации.

- padding – левый и правый отступ внутри колонок. По умолчанию ноль.

- AutoSeparate – задает, как строки будут разделяться  с помощью горизонтальных линий. По умолчанию разделение задано между всеми строками. Задается битовой маской, содержащей одно или более из следующих констант Zend\Text\Table:

Zend\Text\Table\Table::AUTO_SEPARATE_NONE

Zend\Text\Table\Table::AUTO_SEPARATE_HEADER

Zend\Text\Table\Table::AUTO_SEPARATE_FOOTER

Zend\Text\Table\Table::AUTO_SEPARATE_ALL

 

Где заголовки идут первыми строками, а подвал -  последними.

 

Строки просто задаются добавлением в таблицу ново созданных экземпляров Zend\Text\Table\Row, и вызовом метода «appendRow()». Сами строки не имеют каких либо настроек.  Вы передаете массив в appendRow(), который сам конвертирует его в объект строку, содержащую несколько объектов колонок.

 

Так же можете добавлять колонки в строки. Создайте новый экземпляр Zend\Text\Table\Column и передайте настройки колонок в конструктор или позже в один из методов «set*()». Первый параметр отвечает за содержимое колонки, который может содержать множество линий, которые лучше всего разделять «\\n». Второй параметр определяет выравнивание, которое по умолчанию задано как «left» и может принимать одно из значений:

ALIGN_LEFT

ALIGN_CENTER

ALIGN_RIGHT

 

Третий параметр -  это объединение колонок (colspan). Например, при выборе  значения «2» в colspan -  колонка будет состоять из двух колонок.

 

Последний параметр определяет кодировку содержимого, если кодировка содержимого не ASCII или UTF-8.

 

Для добавления колонки в строку, просто вызовите метод «appendColumn()» в вашем объекте строки с объектом колонки как параметром. Или можете передать просто строку в метод «appendColumn()».

 

Для окончательной прорисовки таблицы используйте метод  render() или магический метод __toString() выводя «echo $table;» или «$tableString = (string) $table».

 

Использование Zend\Text\Table

$table = new Zend\Text\Table\Table(array('columnWidths' => array(10, 20)));
 
// Either simple
$table->appendRow(array('Zend', 'Framework'));
 
// Or verbose
$row = new Zend\Text\Table\Row();
 
$row->appendColumn(new Zend\Text\Table\Column('Zend'));
$row->appendColumn(new Zend\Text\Table\Column('Framework'));
 
$table->appendRow($row);
 
echo $table;

Результат:

┌──────────┬────────────────────┐
│Zend      │Framework           │
|──────────|────────────────────|
│Zend      │Framework           │
└──────────┴────────────────────┘

Автор статьи: DuB