Zend_Text_Table es un componente para crear tablas basadas en texto
al vuelo con distintos decoradores. Esto puede ser útil si desea
enviar datos estructurados en correos electrónicos de texto, que suelen usar
fuentes monoespaciadas, o mostrar información en forma de tabla en una aplicación de CLI.
Zend_Text_Table también soporta columnas multilínea, colspan y
alineación.
![]() |
Codificación |
|---|---|
|
Un objeto Zend_Text_Table consta de filas, que contienen
columnas, representadas por Zend_Text_Table_Row y
Zend_Text_Table_Column. Al crear una tabla, puede
suministrar un array con opciones para la tabla. Estas son:
columnWidths (requerido): Un array que define todas las columnas con sus anchos en caracteres.
decorator: El decorador que se usará para los bordes de la tabla. El valor predeterminado es unicode, pero también puede especificar ascii o dar una instancia de un objeto decorador personalizado.
padding: El relleno izquierdo y derecho dentro de las columnas en caracteres. El relleno predeterminado es cero.
-
AutoSeparate: La forma en que las filas se separan con líneas horizontales. El valor predeterminado es una separación entre todas las filas. Esto se define como una máscara de bits que contiene una o más de las siguientes constantes de
Zend_Text_Table:Zend_Text_Table::AUTO_SEPARATE_NONEZend_Text_Table::AUTO_SEPARATE_HEADERZend_Text_Table::AUTO_SEPARATE_FOOTERZend_Text_Table::AUTO_SEPARATE_ALL
Donde la cabecera es siempre la primera fila, y el pie es siempre la última fila.
Las filas simplemente se agregan a la tabla creando una nueva instancia de
Zend_Text_Table_Row, y añadiéndola a la tabla mediante el
método appendRow(). Las filas en sí no tienen opciones. También puede
pasar directamente un array al método appendRow(), que entonces se
convertirá automáticamente en un objeto fila, conteniendo varios objetos
columna.
De la misma forma puede agregar columnas a las filas. Cree una nueva instancia de
Zend_Text_Table_Column y luego establezca las opciones de la columna
en el constructor o más adelante con los métodos set*().
El primer parámetro es el contenido de la columna, que puede tener
varias líneas, que en el mejor de los casos se separan simplemente con el
carácter '\n'. El segundo parámetro define la alineación, que
es 'left' de forma predeterminada y puede ser una de las constantes de clase de
Zend_Text_Table_Column:
ALIGN_LEFTALIGN_CENTERALIGN_RIGHT
El tercer parámetro es el colspan de la columna. Por ejemplo, si
elige "2" como colspan, la columna se extenderá sobre dos columnas de la tabla.
El último parámetro define la codificación del contenido, que debe
suministrarse si el contenido no es ni ASCII ni UTF-8. Para agregar la columna
a la fila, simplemente llame a appendColumn() en su objeto fila
con el objeto columna como parámetro. Alternativamente puede dar directamente
una cadena al método appendColumn().
Para finalmente renderizar la tabla, puede usar el método render()
de la tabla, o usar el método mágico __toString()
haciendo echo $table; o
$tableString = (string) $table.
Ejemplo 69.2. Uso de Zend_Text_Table
Este ejemplo ilustra el uso básico de Zend_Text_Table
para crear una tabla simple:
$table = new Zend_Text_Table(array('columnWidths' => array(10, 20)));
// Either simple
$table->appendRow(array('Zend', 'Framework'));
// Or verbose
$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;
Esto dará como resultado la siguiente salida:
┌──────────┬────────────────────┐ │Zend │Framework │ └──────────┴────────────────────┘
![[Note]](images/note.png)