Zend\Text\Tableは、配列からテーブルタグが作れる…わけではなくテキストでテーブルを作ります。
MySQLのコマンドライン出力みたいなやつです。
出力は以下のようになります。
出力はHTMLタグのない純粋なテキストのため、基本的にコンソールやテキスト出力用です。
また、残念ながら幅の自動調整機能がないため、わざわざTable::setColumnWidthsで設定しなければならず面倒です。
あと配列をそのまま突っ込む機能もないようです。
デコレータとして最初からAscii以外にBlankとUnicodeが用意されており、Blankを指定すると罫線のない出力が得られます。
Unicodeはよくわかりませんでした。
しかし一番欲しい人が多いであろうZend\Text\Table\Decorator\Htmlは何故か存在しませんでした。
また、何気に右端左端の'|'と中間の'|'を区別していないという暴挙のため、ちょっと凝ったデコレータを自作しようとしても作成は不可能です。
なんというファッキンな仕様。
微妙に、というか色々と使い辛いZend\Text\Tableでした。
MySQLのコマンドライン出力みたいなやつです。
<?php
require_once('path/to/channel/vendor/autoload.php');
use Zend\Text\Table\Column;
// テーブル
$table = new Zend\Text\Table\Table();
// 設定
// 描画タイプ
$table->setDecorator('ascii');
// カラムの横幅は指定必須
$table->setColumnWidths(array(4, 6, 8, 10, 10));
// 行をセット
for($i=0; $i<5; $i++){
// 行
$row = new Zend\Text\Table\Row();
// カラムをセット
for($j=0; $j<4; $j++){
// カラム
$column = new Zend\Text\Table\Column();
// 値
$column->setContent('i:' . $i . ' j:' . $j);
// colspan
$column->setColSpan(1);
// align
$column->setAlign(Zend\Text\Table\Column::ALIGN_LEFT);
// 行に追加
$row->appendColumn($column);
}
// カラムを直接行に追加
$row->createColumn('text', array('align'=>Column::ALIGN_CENTER));
// テーブルに追加
$table->appendRow($row);
}
// 表示
print($table->render());
出力は以下のようになります。
+----+------+--------+----------+----------+ |i:0 |i:0 |i:0 j:2 |i:0 j:3 | text | |j:0 |j:1 | | | | +----+------+--------+----------+----------+ |i:1 |i:1 |i:1 j:2 |i:1 j:3 | text | |j:0 |j:1 | | | | +----+------+--------+----------+----------+ |i:2 |i:2 |i:2 j:2 |i:2 j:3 | text | |j:0 |j:1 | | | | +----+------+--------+----------+----------+ |i:3 |i:3 |i:3 j:2 |i:3 j:3 | text | |j:0 |j:1 | | | | +----+------+--------+----------+----------+ |i:4 |i:4 |i:4 j:2 |i:4 j:3 | text | |j:0 |j:1 | | | | +----+------+--------+----------+----------+
出力はHTMLタグのない純粋なテキストのため、基本的にコンソールやテキスト出力用です。
また、残念ながら幅の自動調整機能がないため、わざわざTable::setColumnWidthsで設定しなければならず面倒です。
あと配列をそのまま突っ込む機能もないようです。
デコレータとして最初からAscii以外にBlankとUnicodeが用意されており、Blankを指定すると罫線のない出力が得られます。
Unicodeはよくわかりませんでした。
しかし一番欲しい人が多いであろうZend\Text\Table\Decorator\Htmlは何故か存在しませんでした。
また、何気に右端左端の'|'と中間の'|'を区別していないという暴挙のため、ちょっと凝ったデコレータを自作しようとしても作成は不可能です。
なんというファッキンな仕様。
微妙に、というか色々と使い辛いZend\Text\Tableでした。
PR