1 <?xml version="1.0" encoding="UTF-8"?>
3 <!-- EN-Revision: 20799 -->
4 <sect1 id="zend.text.table.introduction">
5 <title>Zend_Text_Table</title>
8 <classname>Zend_Text_Table</classname> は、さまざまなデコレータを使用して
9 テキストベースの表をその場で作成するためのコンポーネントです。
10 これは、たとえばテキスト形式のメールで構造化されたデータを送信したい場合などに便利です。
11 その場合は等幅フォントを使う必要があります。
12 また、CLI アプリケーションで表形式の情報を表示する場合にも便利です。
13 <classname>Zend_Text_Table</classname> は、複数行にわたるカラムやカラムの連結、
18 <title>エンコーディング</title>
21 <classname>Zend_Text_Table</classname> のデフォルトでは、文字列が
22 UTF-8 でエンコードされていることを前提としています。
23 もしそれ以外を使用している場合は、文字エンコーディングを
24 コンストラクタあるいは <classname>Zend_Text_Table_Column</classname>
25 の <code>setContent</code> メソッドのパラメータで指定します。
26 もうひとつの方法として、もしそのエンコーディングをプロセス全体で使う場合には
27 <methodname>Zend_Text_Table::setInputCharset($charset)</methodname>
29 表を出力する際に別の文字セットを使用したい場合は、
30 <methodname>Zend_Text_Table::setOutputCharset($charset)</methodname> で設定します。
35 <classname>Zend_Text_Table</classname> オブジェクトは行の集まりで構成されており、
36 行は列の集まりで構成されています。行と列を表すのが、それぞれ
37 <classname>Zend_Text_Table_Row</classname> および
38 <classname>Zend_Text_Table_Column</classname> です。
39 表を作成する際に、表のオプションを配列で指定できます。
45 <code>columnWidths</code> (必須):
46 配列で、すべてのカラムとその幅 (文字数) を指定します。
52 <code>decorator</code>: テーブルの罫線に使用するデコレータ。
53 デフォルトは <code>unicode</code> ですが、<code>ascii</code>
54 あるいは独自のデコレータオブジェクトのインスタンスを指定することもできます。
60 <code>padding</code>: カラムの左右の余白文字数。
67 <code>AutoSeparate</code>: 各行を横線でどのように区切るかの方法。
68 デフォルトは、すべての行間を区切ります。これは、次の
69 <classname>Zend_Text_Table</classname> の定数のビットマスクで指定します。
73 <para><constant>Zend_Text_Table::AUTO_SEPARATE_NONE</constant></para>
77 <para><constant>Zend_Text_Table::AUTO_SEPARATE_HEADER</constant></para>
81 <para><constant>Zend_Text_Table::AUTO_SEPARATE_FOOTER</constant></para>
85 <para><constant>Zend_Text_Table::AUTO_SEPARATE_ALL</constant></para>
89 ヘッダは常に最初の行、フッタは常に最後の行となります。
97 <classname>Zend_Text_Table_Row</classname> のインスタンスを作成して、それを
98 <code>appendRow</code> メソッドで追加します。行自体には何もオプションはありません。
99 配列を直接 <code>appendRow</code> メソッドに渡すこともできます。
100 この場合は、複数の列オブジェクトからなる行オブジェクトに自動的に変換されます。
105 <classname>Zend_Text_Table_Column</classname> のインスタンスを作成し、
106 列のオプションをコンストラクタで指定するか、あるいは後から
107 <code>set*</code> メソッドで設定します。
108 最初のパラメータは列の中身で、これは複数行にすることもできます。
109 複数行にする場合は <code>\n</code> で行を区切ります。
110 2 番目のパラメータは配置を指定します。デフォルトは左詰めで、
111 <classname>Zend_Text_Table_Column</classname> のクラス定数のいずれかを指定できます。
116 <constant>ALIGN_LEFT</constant>
122 <constant>ALIGN_CENTER</constant>
128 <constant>ALIGN_RIGHT</constant>
133 3 番目のパラメータは列の連結 (colspan) を指定します。
134 たとえば、このパラメータに "2" を指定すると、
135 表の中で 2 つの列が連結されるようになります。
136 最後のパラメータは列の中身のエンコーディングです。
137 ASCII および UTF-8 以外を使用する場合は必ず指定しなければなりません。
138 行を列に追加するには、行オブジェクトの <code>appendColumn</code>
139 のパラメータに列オブジェクトを指定してコールします。
140 あるいは、文字列を直接 <code>appendColumn</code> メソッドに渡すこともできます。
144 最後に、表をレンダリングするには <code>render</code>
146 <code>echo $table;</code> や <code>$tableString = (string) $table</code>
147 などとしてマジックメソッド <code>__toString</code> を使用することもできます。
150 <example id="zend.text.table.example.using">
151 <title>Zend_Text_Table の使用例</title>
154 この例では、<classname>Zend_Text_Table</classname>
155 でシンプルな表を作成するための方法を示します。
158 <programlisting language="php"><![CDATA[
159 $table = new Zend_Text_Table(array('columnWidths' => array(10, 20)));
162 $table->appendRow(array('Zend', 'Framework'));
165 $row = new Zend_Text_Table_Row();
167 $row->appendColumn(new Zend_Text_Table_Column('Zend'));
168 $row->appendColumn(new Zend_Text_Table_Column('Framework'));
170 $table->appendRow($row);
179 <programlisting language="text"><![CDATA[
180 ┌──────────┬────────────────────┐
182 └──────────┴────────────────────┘