| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.text.table.introduction">
- <title>Zend_Text_Table</title>
- <para>
- <classname>Zend_Text_Table</classname> ist eine Komponente für die Erstellung von
- Text-basierenden Tabellen welche mit unterschiedlichen Dekoratoren arbeitet. Das kann
- hilfreich sein, wenn man entweder strukturierte Daten in einer Textemail verwenden will,
- welche normalerweise mit monospaced Schriftarten geschrieben sind, oder um
- Tabelleninformationen in einer CLI Anwendung darzustellen.
- <classname>Zend_Text_Table</classname> unterstützt mehrzeilige Spalten, Colspan und auch
- Ausrichtung.
- </para>
- <note>
- <title>Kodierung</title>
- <para>
- <classname>Zend_Text_Table</classname> erwartet die Strings standardmäßig als UTF-8
- kodiert. Wenn das nicht der Fall ist, kann entweder die Zeichenkodierung als Parameter
- an den <methodname>constructor()</methodname> übergeben werden, oder an die
- <methodname>setContent()</methodname> Methode von
- <classname>Zend_Text_Table_Column</classname>. Wenn man im kompletten
- Prozess eine andere Kodierung verwendet, kann man die standardmäßige Eingabekodierung
- mit <methodname>Zend_Text_Table::setInputCharset($charset)</methodname> setzen. Im Fall,
- das man eine andere Ausgabekodierung für die Tabelle benötigt, kann diese mit
- <methodname>Zend_Text_Table::setOutputCharset($charset)</methodname> gesetzt werden.
- </para>
- </note>
- <para>
- Ein <classname>Zend_Text_Table</classname> Objekt besteht aus Zeilen, die Spalten enthalten,
- repräsentiert durch <classname>Zend_Text_Table_Row</classname> und
- <classname>Zend_Text_Table_Column</classname>. Wenn eine Tabelle erstellt wird, kann ein
- Array mit Optionen für die Tabelle angegeben werden: Diese sind:
- <itemizedlist>
- <listitem>
- <para>
- <property>columnWidths</property> (required): Ein Array das alle Spalten mit
- Ihrer Breite in Zeichen definiert.
- </para>
- </listitem>
- <listitem>
- <para>
- <property>decorator</property>: Der Dekorator der für die Tabellenränder
- verwendet wird. Der Standard ist <emphasis>unicode</emphasis>, aber man kann
- auch <emphasis>ascii</emphasis> spezifizieren, oder eine Instanz eines eigenen
- Dekoratorobjekts angeben.
- </para>
- </listitem>
- <listitem>
- <para>
- <property>padding</property>: Die linke und rechte Füllung innerhalb der Spalten
- in Zeichen. Die Standardfüllung ist Null.
- </para>
- </listitem>
- <listitem>
- <para>
- <property>AutoSeparate</property>: Der Weg auf dem Zeilen mit horizontalen
- Linien getrennt werden. Der Standard ist eine Trennung zwischen allen Zeilen.
- Das ist als Bitmaske definiert die ein oder mehrere der folgenden Konstanten von
- <classname>Zend_Text_Table</classname> haben kann:
- <itemizedlist>
- <listitem>
- <para><constant>Zend_Text_Table::AUTO_SEPARATE_NONE</constant></para>
- </listitem>
- <listitem>
- <para>
- <constant>Zend_Text_Table::AUTO_SEPARATE_HEADER</constant>
- </para>
- </listitem>
- <listitem>
- <para>
- <constant>Zend_Text_Table::AUTO_SEPARATE_FOOTER</constant>
- </para>
- </listitem>
- <listitem>
- <para><constant>Zend_Text_Table::AUTO_SEPARATE_ALL</constant></para>
- </listitem>
- </itemizedlist>
- Wobei der Tabellenheader immer die erste Zeile, und der Tabellenfooter immer
- die letzte Zeile ist.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- <para>
- Zeilen werden zur Tabelle einfach hinzugefügt indem eine neue Instanz von
- <classname>Zend_Text_Table_Row</classname> erstellt, und der Tabelle über die
- <methodname>appendRow()</methodname> Methode angehängt wird. Zeilen selbst haben keine
- Optionen. Man kann der <methodname>appendRow()</methodname> Methode auch direkt auch ein
- Array geben, welches dann automatisch in ein Zeilenobjekt konvertiert wird, welches mehrere
- Spaltenobjekte enthält.
- </para>
- <para>
- Auf dem gleichen Weg kann man Spalten zu Zeilen hinzufügen. Man erstellt eine neue Instanz
- von <classname>Zend_Text_Table_Column</classname> und setzt dann entweder die Zeilenoptionen
- im Constructor, oder später mit den <methodname>set*()</methodname> Methoden. Der erste
- Parameter ist der Inhalt der Spalte, welcher mehrere Zeilen haben kann, welche im besten
- Fall einfach durch das '\n' Zeichen getrennt sind. Der zweite Parameter definiert die
- Ausrichtung, welche standardmäßig 'left' ist, und eine der Klassenkonstanten von
- <classname>Zend_Text_Table_Column</classname> sein kann:
- <itemizedlist>
- <listitem><para><constant>ALIGN_LEFT</constant></para></listitem>
- <listitem><para><constant>ALIGN_CENTER</constant></para></listitem>
- <listitem><para><constant>ALIGN_RIGHT</constant></para></listitem>
- </itemizedlist>
- Der dritte Parameter ist die Colspan der Zeile. Wenn man, zum Beispiel, "2" als Colspan
- definiert, wird die Spalte über 2 Spalten der Tabelle gespannt. Der letzt Parameter
- definiert die Kodierung des Inhalts, welche angegeben werden sollte, wenn der Inhalt weder
- ASCII noch UTF-8 ist. Um die Spalte zur Zeile hinzuzufügen, muß einfach
- <methodname>appendColumn()</methodname> im Zeilenobjekt, mit dem Spaltenobjekt als
- Parameter, aufgerufen werden. Alternativ kann ein String direkt an die
- <methodname>appendColumn()</methodname> Methode übergeben werden.
- </para>
- <para>
- Um die Tabelle letztendlich darzustellen, kann man entweder die
- <methodname>render()</methodname> Methode der Tabelle verwenden, oder die magische
- <methodname>__toString()</methodname> Methode der Tabelle, indem man
- <command>echo $table;</command> oder <command>$tableString = (string) $table</command>
- ausführt.
- </para>
- <example id="zend.text.table.example.using">
- <title>Verwenden von Zend_Text_Table</title>
- <para>
- Ein Beispiel zeigt die grundsätzliche Verwendung von
- <classname>Zend_Text_Table</classname> um eine einfache Tabelle zu erstellen:
- </para>
- <programlisting language="php"><![CDATA[
- $table = new Zend_Text_Table(array('columnWidths' => array(10, 20)));
- // Entweder Einfach
- $table->appendRow(array('Zend', 'Framework'));
- // Oder wortreich
- $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;
- ]]></programlisting>
- <para>
- Das führt zur folgenden Ausgabe:
- </para>
- <programlisting language="text"><![CDATA[
- ┌──────────┬────────────────────┐
- │Zend │Framework │
- └──────────┴────────────────────┘
- ]]></programlisting>
- </example>
- </sect1>
|