Zend_Text_Table.xml 7.7 KB

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