2
0

Zend_Text_Table.xml 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.text.table.introduction">
  5. <title>Zend_Text_Table</title>
  6. <para>
  7. <classname>Zend_Text_Table</classname> ist eine Komponente für die Erstellung von
  8. Text-basierenden Tabellen welche mit unterschiedlichen Dekoratoren arbeitet. Das kann
  9. hilfreich sein, wenn man entweder strukturierte Daten in einer Textemail verwenden will,
  10. welche normalerweise mit monospaced Schriftarten geschrieben sind, oder um
  11. Tabelleninformationen in einer CLI Anwendung darzustellen.
  12. <classname>Zend_Text_Table</classname> unterstützt mehrzeilige Spalten, Colspan und auch
  13. Ausrichtung.
  14. </para>
  15. <note>
  16. <title>Kodierung</title>
  17. <para>
  18. <classname>Zend_Text_Table</classname> erwartet die Strings standardmäßig als UTF-8
  19. kodiert. Wenn das nicht der Fall ist, kann entweder die Zeichenkodierung als Parameter
  20. an den <methodname>constructor()</methodname> übergeben werden, oder an die
  21. <methodname>setContent()</methodname> Methode von
  22. <classname>Zend_Text_Table_Column</classname>. Wenn man im kompletten
  23. Prozess eine andere Kodierung verwendet, kann man die standardmäßige Eingabekodierung
  24. mit <methodname>Zend_Text_Table::setInputCharset($charset)</methodname> setzen. Im Fall,
  25. das man eine andere Ausgabekodierung für die Tabelle benötigt, kann diese mit
  26. <methodname>Zend_Text_Table::setOutputCharset($charset)</methodname> gesetzt werden.
  27. </para>
  28. </note>
  29. <para>
  30. Ein <classname>Zend_Text_Table</classname> Objekt besteht aus Zeilen, die Spalten enthalten,
  31. repräsentiert durch <classname>Zend_Text_Table_Row</classname> und
  32. <classname>Zend_Text_Table_Column</classname>. Wenn eine Tabelle erstellt wird, kann ein
  33. Array mit Optionen für die Tabelle angegeben werden: Diese sind:
  34. <itemizedlist>
  35. <listitem>
  36. <para>
  37. <property>columnWidths</property> (required): Ein Array das alle Spalten mit
  38. Ihrer Breite in Zeichen definiert.
  39. </para>
  40. </listitem>
  41. <listitem>
  42. <para>
  43. <property>decorator</property>: Der Dekorator der für die Tabellenränder
  44. verwendet wird. Der Standard ist <emphasis>unicode</emphasis>, aber man kann
  45. auch <emphasis>ascii</emphasis> spezifizieren, oder eine Instanz eines eigenen
  46. Dekoratorobjekts angeben.
  47. </para>
  48. </listitem>
  49. <listitem>
  50. <para>
  51. <property>padding</property>: Die linke und rechte Füllung innerhalb der Spalten
  52. in Zeichen. Die Standardfüllung ist Null.
  53. </para>
  54. </listitem>
  55. <listitem>
  56. <para>
  57. <property>AutoSeparate</property>: Der Weg auf dem Zeilen mit horizontalen
  58. Linien getrennt werden. Der Standard ist eine Trennung zwischen allen Zeilen.
  59. Das ist als Bitmaske definiert die ein oder mehrere der folgenden Konstanten von
  60. <classname>Zend_Text_Table</classname> haben kann:
  61. <itemizedlist>
  62. <listitem>
  63. <para><constant>Zend_Text_Table::AUTO_SEPARATE_NONE</constant></para>
  64. </listitem>
  65. <listitem>
  66. <para>
  67. <constant>Zend_Text_Table::AUTO_SEPARATE_HEADER</constant>
  68. </para>
  69. </listitem>
  70. <listitem>
  71. <para>
  72. <constant>Zend_Text_Table::AUTO_SEPARATE_FOOTER</constant>
  73. </para>
  74. </listitem>
  75. <listitem>
  76. <para><constant>Zend_Text_Table::AUTO_SEPARATE_ALL</constant></para>
  77. </listitem>
  78. </itemizedlist>
  79. Wobei der Tabellenheader immer die erste Zeile, und der Tabellenfooter immer
  80. die letzte Zeile ist.
  81. </para>
  82. </listitem>
  83. </itemizedlist>
  84. </para>
  85. <para>
  86. Zeilen werden zur Tabelle einfach hinzugefügt indem eine neue Instanz von
  87. <classname>Zend_Text_Table_Row</classname> erstellt, und der Tabelle über die
  88. <methodname>appendRow()</methodname> Methode angehängt wird. Zeilen selbst haben keine
  89. Optionen. Man kann der <methodname>appendRow()</methodname> Methode auch direkt auch ein
  90. Array geben, welches dann automatisch in ein Zeilenobjekt konvertiert wird, welches mehrere
  91. Spaltenobjekte enthält.
  92. </para>
  93. <para>
  94. Auf dem gleichen Weg kann man Spalten zu Zeilen hinzufügen. Man erstellt eine neue Instanz
  95. von <classname>Zend_Text_Table_Column</classname> und setzt dann entweder die Zeilenoptionen
  96. im Constructor, oder später mit den <methodname>set*()</methodname> Methoden. Der erste
  97. Parameter ist der Inhalt der Spalte, welcher mehrere Zeilen haben kann, welche im besten
  98. Fall einfach durch das '\n' Zeichen getrennt sind. Der zweite Parameter definiert die
  99. Ausrichtung, welche standardmäßig 'left' ist, und eine der Klassenkonstanten von
  100. <classname>Zend_Text_Table_Column</classname> sein kann:
  101. <itemizedlist>
  102. <listitem><para><constant>ALIGN_LEFT</constant></para></listitem>
  103. <listitem><para><constant>ALIGN_CENTER</constant></para></listitem>
  104. <listitem><para><constant>ALIGN_RIGHT</constant></para></listitem>
  105. </itemizedlist>
  106. Der dritte Parameter ist die Colspan der Zeile. Wenn man, zum Beispiel, "2" als Colspan
  107. definiert, wird die Spalte über 2 Spalten der Tabelle gespannt. Der letzt Parameter
  108. definiert die Kodierung des Inhalts, welche angegeben werden sollte, wenn der Inhalt weder
  109. ASCII noch UTF-8 ist. Um die Spalte zur Zeile hinzuzufügen, muß einfach
  110. <methodname>appendColumn()</methodname> im Zeilenobjekt, mit dem Spaltenobjekt als
  111. Parameter, aufgerufen werden. Alternativ kann ein String direkt an die
  112. <methodname>appendColumn()</methodname> Methode übergeben werden.
  113. </para>
  114. <para>
  115. Um die Tabelle letztendlich darzustellen, kann man entweder die
  116. <methodname>render()</methodname> Methode der Tabelle verwenden, oder die magische
  117. <methodname>__toString()</methodname> Methode der Tabelle, indem man
  118. <command>echo $table;</command> oder <command>$tableString = (string) $table</command>
  119. ausführt.
  120. </para>
  121. <example id="zend.text.table.example.using">
  122. <title>Verwenden von Zend_Text_Table</title>
  123. <para>
  124. Ein Beispiel zeigt die grundsätzliche Verwendung von
  125. <classname>Zend_Text_Table</classname> um eine einfache Tabelle zu erstellen:
  126. </para>
  127. <programlisting language="php"><![CDATA[
  128. $table = new Zend_Text_Table(array('columnWidths' => array(10, 20)));
  129. // Entweder Einfach
  130. $table->appendRow(array('Zend', 'Framework'));
  131. // Oder wortreich
  132. $row = new Zend_Text_Table_Row();
  133. $row->appendColumn(new Zend_Text_Table_Column('Zend'));
  134. $row->appendColumn(new Zend_Text_Table_Column('Framework'));
  135. $table->appendRow($row);
  136. echo $table;
  137. ]]></programlisting>
  138. <para>
  139. Das führt zur folgenden Ausgabe:
  140. </para>
  141. <programlisting language="text"><![CDATA[
  142. ┌──────────┬────────────────────┐
  143. │Zend │Framework │
  144. └──────────┴────────────────────┘
  145. ]]></programlisting>
  146. </example>
  147. </sect1>