Zend_Text_Table.xml 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 20799 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.text.table.introduction">
  5. <title>Zend_Text_Table</title>
  6. <para>
  7. <classname>Zend_Text_Table</classname> est un composant pour créer à la volée des
  8. tables de type texte avec différents décorateurs. Ceci peut être utile, si vous souhaitez
  9. soit envoyé des données structurées dans des emails textuels, qui sont sont utilisés pour
  10. leurs polices mono-espacés, ou pour afficher des informations sous forme de tableaux dans
  11. une application CLI. <classname>Zend_Text_Table</classname> supporte les colonnes
  12. multi-lignes, les fusions de colonnes ainsi que l'alignement.
  13. </para>
  14. <note>
  15. <title>Encodage</title>
  16. <para>
  17. <classname>Zend_Text_Table</classname> suppose que vos chaînes sont encodés en
  18. UTF-8 par défaut. Si ce n'est pas le cas, vous pouvez fournir l'encodage en tant que
  19. paramètre du constructeur ou à la méthode <code>setContent</code> de
  20. <classname>Zend_Text_Table_Column</classname>. Alternativement si vous avez un encodage
  21. différent dans le processus complet, vous pouvez définir l'encodage d'entrée ("input")
  22. standard avec <methodname>Zend_Text_Table::setInputCharset($charset)</methodname>. Dans le
  23. cas où vous avez besoin d'un autre encodage pour la sortie ("output") de la table, vous
  24. pouvez le paramétrer avec
  25. <methodname>Zend_Text_Table::setOutputCharset($charset)</methodname>.
  26. </para>
  27. </note>
  28. <para>
  29. Un objet <classname>Zend_Text_Table</classname> consiste en des lignes, qui
  30. contiennent des colonnes, représenté par <classname>Zend_Text_Table_Row</classname> et
  31. <classname>Zend_Text_Table_Column</classname>. Lors de la création d'une table, vous pouvez
  32. fournir un tableau avec les options pour la table. Celles-ci sont : <itemizedlist>
  33. <listitem>
  34. <para>
  35. <code>columnWidths</code> (obligatoire) : un tableau définissant toutes
  36. les largeurs de colonnes en nombre de caractères.
  37. </para>
  38. </listitem>
  39. <listitem>
  40. <para>
  41. <code>decorator</code> : le décorateur à utiliser pour les bordures de la
  42. table. Le défaut est <code>unicode</code>, mais vous pouvez aussi spécifier
  43. <code>ascii</code> ou fournir une instance d'un objet décorateur
  44. personnalisé.
  45. </para>
  46. </listitem>
  47. <listitem>
  48. <para>
  49. <code>padding</code> : le remplissage gauche et droit de la colonne en
  50. caractères. Le remplissage par défaut est zéro.
  51. </para>
  52. </listitem>
  53. <listitem>
  54. <para>
  55. <code>AutoSeparate</code> : la manière comment les lignes sont séparées
  56. avec des lignes horizontales. Par défaut, il y a une séparation entre chaque
  57. ligne. Ceci est défini entant que bitmask contenant une ou plus des constantes
  58. de <classname>Zend_Text_Table</classname> suivantes :<itemizedlist>
  59. <listitem>
  60. <para><classname>Zend_Text_Table::AUTO_SEPARATE_NONE</classname></para>
  61. </listitem>
  62. <listitem>
  63. <para><classname>Zend_Text_Table::AUTO_SEPARATE_HEADER</classname></para>
  64. </listitem>
  65. <listitem>
  66. <para><classname>Zend_Text_Table::AUTO_SEPARATE_FOOTER</classname></para>
  67. </listitem>
  68. <listitem>
  69. <para><classname>Zend_Text_Table::AUTO_SEPARATE_ALL</classname></para>
  70. </listitem>
  71. </itemizedlist> Où "header" est toujours la première ligne, et "footer" est
  72. toujours la dernière.
  73. </para>
  74. </listitem>
  75. </itemizedlist>
  76. </para>
  77. <para>
  78. Les lignes sont simplement ajoutées à la table en créant une nouvelle instance de
  79. <classname>Zend_Text_Table_Row</classname>, et en l'ajoutant à la table via la méthode
  80. <code>appendRow</code>. Les lignes elle-même n'ont pas d'options. Vous pouvez aussi fournir
  81. un tableau directement à la méthode <code>appendRow</code>, qui le convertira
  82. automatiquement en des objets <code>Row</code>, contenant les multiples objets
  83. <code>Column</code>.
  84. </para>
  85. <para>
  86. De la même manière vous pouvez ajouter les colonnes aux lignes. Créez un instance de
  87. <classname>Zend_Text_Table_Column</classname> et ensuite paramétrer les options de colonnes
  88. soit dans le constructeur ou plus tard par les méthodes <code>set*</code>. Le premier
  89. paramètre est le contenu de la colonne qui peut avoir des lignes multiples, elles sont dans
  90. le meilleur des cas séparées par le caractère <code>\n</code>. Le second paramètre définit
  91. l'alignement, qui est <code>left</code> par défaut et peut être l'une des constantes de la
  92. classe <classname>Zend_Text_Table_Column</classname> :<itemizedlist>
  93. <listitem>
  94. <para><constant>ALIGN_LEFT</constant></para>
  95. </listitem>
  96. <listitem>
  97. <para><constant>ALIGN_CENTER</constant></para>
  98. </listitem>
  99. <listitem>
  100. <para><constant>ALIGN_RIGHT</constant></para>
  101. </listitem>
  102. </itemizedlist>Le troisième paramètre est le colspan ("fusion") de la colonne. Par
  103. exemple, quand vous choisissez "2 comme colspan, la colonne va déborder sur deux colonnes de
  104. la table. Le dernier paramètre définit l'encodage du contenu, qui peut être fourni, si le
  105. contenu n'est ni de l'ASCII ni de l'UTF-8. Pour ajouter la colonne à la ligne, vous appelez
  106. simplement <code>appendColumn</code> dans votre objet <code>Row</code> avec l'objet
  107. <code>Column</code> en tant que paramètre. Alternativement vous pouvez directement fournir
  108. la chaîne à la méthode <code>appendColumn</code>.
  109. </para>
  110. <para>
  111. Pour finalement effectuer le rendu de la table, vous pouvez soit utiliser la méthode
  112. <code>render</code> de la table, ou utilisez la méthode magique <code>__toString</code> en
  113. faisant <code>echo $table;</code> ou <code>$tableString = (string) $table</code>.
  114. </para>
  115. <example id="zend.text.table.example.using">
  116. <title>Utilisation de Zend_Text_Table</title>
  117. <para>
  118. Cet exemple illustre un utilisation basique de
  119. <classname>Zend_Text_Table</classname> pour créer une table simple :
  120. </para>
  121. <programlisting language="php"><![CDATA[
  122. $table = new Zend_Text_Table(array('columnWidths' => array(10, 20)));
  123. // Either simple
  124. $table->appendRow(array('Zend', 'Framework'));
  125. // Or verbose
  126. $row = new Zend_Text_Table_Row();
  127. $row->appendColumn(new Zend_Text_Table_Column('Zend'));
  128. $row->appendColumn(new Zend_Text_Table_Column('Framework'));
  129. $table->appendRow($row);
  130. echo $table;
  131. ]]></programlisting>
  132. <para>Ceci entraînera l'affichage suivant :</para>
  133. <programlisting language="text"><![CDATA[
  134. ┌──────────┬────────────────────┐
  135. │Zend │Framework │
  136. └──────────┴────────────────────┘
  137. ]]></programlisting>
  138. </example>
  139. </sect1>