忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2024/03/19 18:35 |
Zend Framework2.1.4 Zend\Text\Table
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


2013/05/24 23:25 | Comments(0) | PHP

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<買ったものリスト 2013/05/26 | HOME | Zend Framework2.1.4 Zend\Stdlib\StringUtils>>
忍者ブログ[PR]