Depurando código con FirePHP y Zend Framework, o como decir adiós a los var_dump()
01/12/2008 por Javier Caride
Todos los que llevamos tiempo desarrollando en PHP sabemos que una de las tareas más tediosas es la depuración de nuestros scritps, y mucho más si estos están alimentando la respuesta de una llamada AJAX que tiene que devolver los datos en un cierto formato (JSON por ejemplo). Esta tarea se puede hacer más “agradable” si disponemos de un IDE con depuración integrada, como puede ser Zend Studio, o recientemente Eclipse con el módulo PDT
A pesar de la comodidad de tener el depurador integrado en el entorno de desarrollo, muchas veces se hace un poco engorroso tener que iniciar una sesión de depuración cada vez que quieres saber qué datos están pasando por tus variables
Pues bien, para facilitar la vida a los desarrolladores tenemos disponible un nuevo complemento para firefox: FirePHP. Este componente nos permite depurar directamente nuestros scripts PHP en la consola del firebug
La herramienta se basa en enviar unas ciertas cabeceras HTTP desde nuestros scripts PHP y que son capturadas por el plugin. De esta forma, la salida de nuestros scripts no se ve alterada (perfecto para llamadas AJAX que devuelvan un XML o un JSON) y ganamos rapidez en la depuración
FirePHP está ganando popularidad rápidamente entre los desarrolladores y de hecho muchos frameworks como Zend Framework o Symphony están incorporando en su API llamadas para depurar con esta herramienta
Si no estamos usando ninguno de estos frameworks, el equipo de desarrollo de FirePHP nos ofrece una pequeña librería en PHP5 que podemos integrar fácilmente en nuestros scripts
Lo primero que tenemos que hacer es instalar la extensión FirePHP en nuestro Firefox. Luego descargamos FirePHPCore, descomprimimos el contenido en el directorio donde estemos almacenando las librerías que usamos y ya sólo nos queda hacer las llamadas pertinentes tal y como se nos explica en este tutorial
Si estamos usando Zend Framework y su Modelo Vista Controlador (MVC) también podemos integrar FirePHPCore de forma fácil, si por un casual no nos gustase el API que nos ofrece el propio framework
Primero registramos el logger en el bootstrap.php de nuestra aplicación:
//Incluímos la librería
require_once('FirePHPCore/FirePHP.class.php');
// Instanciamos el logger y lo registramos
$firebugLogger = FirePHP::getInstance(true);
Zend_Registry::set('firebugLogger',$firebugLogger);
Luego en cualquier parte de nuestro código podemos invocar al logger, como por ejemplo en una acción de un controlador:
public function indexAction() {
// Obtenemos la instancia del logger previamente registrada
// en el bootstrap.php
$fbLogger = Zend_Registry::get('firebugLogger');
// Mensajes de log
$fbLogger->log('Mensaje');
$fbLogger->info('Mensaje nivel INFO');
$fbLogger->warn('Mensaje nivel WARNING');
$fbLogger->error('Mensaje niverl ERROR');
// Mensaje de log con etiqueta adicional
$fbLogger->log('Mensaje','Etiqueta Opcional');
// Podemos mostrar una tabla de datos
$table = array();
$table[] = array('Columna 1','Columna 2');
$table[] = array('1:1','1:2');
$table[] = array('2:1','2:2');
$table[] = array('3:1','3:2');
$fbLogger->table('Tabla de datos', $table); // or FB::
// También podemos mostrar información de traza
$fbLogger->trace('Trace Label');
}
Aquí podemos ver cómo queda la salida en la consola del Firebug:
