Zend_Text_Table.xml 7.1 KB

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