FirePHP

FirePHP
Información sobre la plantilla
Parte de la familia Lenguajes de Programación PHP
ImagenFirePHP.jpg
FirePHP LPPHP

FirePHP es un complemento para hacer debug de aplicaciones PHP, lo más rápido es sacar en la página el contenido de variables de PHP, para ver sus valores directamente en la página Web, por medio de instrucciones echo, print_r o similares.

FirePHP-Firebug

Existe una posibilidad intermedia, no tan complicada de configurar como un debug con tu IDE de desarrollo (ni tan potente), pero más versátil y con mayores posibilidades que hacer un simple echo del valor de las variables, para verlo escrito en la página Web. Se trata de utilizar FirePHP, un complemento para Firefox, que además funciona como complemento de otra extensión muy útil del mencionado navegador llamada Firebug. Firebug es una de esas extensiones que, cuando empiezas a usarla, se convierte en un ayudante imprescindible.

Funcionamiento FirePHP

El complemento FirePHP tiene la particularidad de enviar mensajes a la consola de Firebug, sin que éstos aparezcan en la página. Los mensajes que podremos enviar serán simples log, con el contenido de cualquier elemento que necesites visualizar (como variables creadas en PHP), mensajes de error o warning. Como los mensajes no aparecen en la página, no molestan a la hora de visualizar el resultado de tus scripts PHP y además, en el caso que estés generando respuestas en XML o JSON (cuando trabajes por ejemplo con Ajax), estos log enviados a Firebug no interferirán en el correcto funcionamiento de la página. FirePHP consigue este interesante comportamiento porque los contenidos que se envían a la consola viajan en las cabeceras del HTTP, con lo que nadie los verá a no ser que examine las cabeceras del protocolo. La consola de Firebug los interpretará y los mostrará convenientemente al desarrollador. Además, programando convenientemente esos mensajes de log, es muy fácil desactivarlos, para que un usuario que acceda a tu sitio en producción, no reciba contenidos de debug, que pueden resultar sensibles. Debemos saber que, aunque los mensajes no se vean en la página, irán en las cabeceras del HTTP y por lo tanto estarán disponibles para quien sepa cómo mirarlos.

Instalación FirePHP

Para que FirePHP funcione, tenemos que colocar unos archivos en el servidor, con el código de las funciones que son necesarias para lanzar mensajes a la consola. FirePHP dispone de unos códigos fuente para PHP (versiones 4 y 5), que tenemos que instalar en nuestro servidor. Esto es, simplemente, colocarlos en algún lugar del servidor para poder incluirlos con las típicas funciones que requiere o incluye de PHP. Estos códigos, que ahora explicaremos cómo obtener tienen dos distribuciones, una para trabajo con programación procedimental y otra para trabajo con Programación orientada a objetos. Nosotros podemos utilizar una u otra forma, dependiendo de la que más sencilla nos parezca o la que más utilidad le encontremos. Lógicamente, para que todo esto tenga sentido, primero hay que instalar FirePHP para comunicar con la consola de Firebug antes de poder enviar mensajes desde PHP a la consola de Firebug, para ser interpretados y mostrados por FirePHP, tenemos que cargar en nuestro servidor web unos archivos que tienen unas librerías o API para comunicar con la consola. Estos archivos con el código de las librerías se encuentran disponibles en la propia página de FirePHP. Debemos descargarlos e instalarlos en un directorio de nuestro servidor web PHP. Si tenemos instalado PEAR u otro framework para PHP tenemos además otros métodos para incluir FirePHP en nuestras aplicaciones. Estas librerías vienen en dos archivos que se llaman fb.php y FirePHP.class.php (que también tienen sus versiones para PHP 4, con nombres fb.php4 y FirePHP.class.php4). Las podemos colocar en cualquier sitio, con tal que sepamos dónde las hemos dejado, porque tendremos que incluirlas desde nuestros scripts PHP y para ello tendremos que conocer la ruta donde están localizadas. La diferencia entre fb.php y FirePHP.class.php es que el archivo fb.php tiene código para poder accionar FirePHP por medio de funciones o procedimientos y FirePHP.class.php contiene una clase para poder hacer básicamente las mismas cosas, pero por medio de programación orientada a objetos. La explicación de los métodos de trabajo a partir de las clases contenida en FirePHP.class.php, que es más útil y además ayudará a mantener el código de una manera más simple y en el futuro facilitará algunas tareas como ocultar los mensajes de debug cuando estemos en el servidor en producción. Una vez guardados los archivos PHP para comunicar con la consola, los debemos incluir en nuestro sistema por medio de una sentencia como esta:

require_once('RUTA-DE-LOS-FICHEROS/FirePHP.class.php');

FirePHP desde PHP

Cómo utilizar el código PHP de FirePHP para mostrar mensajes de debug, que podremos visualizar en la consola de Firebug. Aquí se muestra paso a paso cómo tenemos que hacer para usar FirePHP en nuestras aplicaciones y facilitar las tareas de depuración de errores en PHP. Aprenderemos a mostrar algunos mensajes de log, sobre variables normales y sobre arrays. Además veremos cómo podemos ejecutar una instrucción para que los mensajes de debug no aparezcan en la consola, útil para aplicaciones en producción.

Utilizar FirePHP para mostrar mensajes debug

Primeramente tenemos FirePHP instalado en nuestro Firefox y tenemos los archivos PHP para poder lanzar mensajes a la consola, podemos ver un sencillo script para ver de qué manera trabajar con estos sistemas. Hacemos un archivo PHP que, al verlo en Firefox, mostrará unos mensajes en la consola de Firebug. Será simple para que todo el mundo lo pueda entender:

A) Incluir el archivo de PHP con el código de FirePHP. require_once('../FirePHPCore/FirePHP.class.php');

B) Ejecutar la función PHP ob_start(); para que la salida de PHP se almacene en un buffer, hasta que se complete la página. Esto nos permitirá crear mensajes para la consola en cualquier momento del código PHP. Recordar que los mensajes de FirePHP viajan en las cabeceras del HTTP y si no se hace uso del buffer puede que ocurra que las cabeceras se hayan enviado, junto con el contenido HTML de la página, y que los mensajes no se visualicen. ob_start();

Nota: si la directiva de PHP.ini output_buffering está activada, no necesitaríamos hacer el ob_start().

C) Instanciar un objeto de la clase FirePHP, que utilizaremos para enviar mensajes a la consola, por medio de sus métodos. $mifirePHP = FirePHP::getInstance(true);

D) Enviar mensajes de log a la consola. Ahora puedes crear variables PHP y mostrar sus contenidos de la siguiente manera: $mivariable=2; $mifirePHP->log($mivariable, "Mensaje");

Con este otro código se crearía un Array y se mostraría luego su contenido: $miArray = array("indice" => "valor", "otra cosa" => "otro valor"); $mifirePHP->log($miArray, "Este es el contenido del Array miArray");

El resultado de mostrar esos valores aparecerá, como se decía, en la consola de Firebug. Pero ten en cuenta que tienes que habilitar las funcionalidades de "Consola" y "Red" dentro de Firebug. Opcionalmente: Evitar que los mensajes aparezcan en la consola.

Si estamos programando en nuestro sitio de desarrollo, no habrá problemas en que enviemos ciertas informaciones sensibles por la cabecera del HTTP hacia la consola de FirePHP. No obstante, en sitios Web en producción hay cuidar que no se envíe por la cabecera ninguna información sensible, que pueda afectar a la seguridad de las aplicaciones Web o a la privacidad de los usurarios que te visitan.

Si estamos programando con las clases (de programación orientada a objetos) de FirePHP, existe un único método para conseguir esto. En concreto el método se llama setEnabled y tenemos que enviar como parámetro el valor false. $mifirePHP->setEnabled(false);

Con esta sencilla instrucción conseguimos que, a partir del momento de ejecutarla, no se muestren mensajes en la consola. Podemos ponerla a continuación de la instanciación del objeto FirePHP para que no se muestre ningún mensaje en la página. Incluso podemos vincular esa instrucción a una comprobación sobre si un usuario administrador ha hecho login, o algo parecido, que evitaría que los visitantes generales vieran mensajes, pero permitiría a los administradores recibirlos y poder depurar aplicaciones también en servidores de producción.

Código de pág PHP que utiliza FirePHp

El script PHP completo de las pruebas de FirePHP realizado en este artículo es:

require_once('../FirePHPCore/FirePHP.class.php');

ob_start();

//instanciar un objeto de la clase FirePHP

$mifirePHP = FirePHP::getInstance(true);

//evito que se muestren los mensajes en la consola de firebug

//$mifirePHP->setEnabled(false);

?>

Puedo hacer lo que quiera en la página

//puedo hacer lo que quiera tb en PHP...

$mivariable=2;

$mivariable*=389;

$mifirePHP->log($mivariable, "Mensaje");

$miArray = array("indice" => "valor", "otra cosa" => "otro valor");

$mifirePHP->log($miArray, "Este es el contenido del Array miArray");

?>

Fuentes

Referencias