2009-11-07

FirePHP: Ampliación de Firebug para debug de código PHP

Existen dos formas típicas de debuggear código del lado de servidor: mediante un Ambiente de Desarrollo Integrado (IDE) con un debugger incorporado o realizar los procesos de debuggeo en un navegador web.

En esta nota compartiremos contigo una forma elegante y simple de debuggear aplicaciones Ajax mediante Mozilla Firefox, a través de FirePHP.

FirePHP permite registrar tus mensajes de debuggeo a tu consola Firebug. FirePHP no se mete con tu código (y no necesita que modifiques nada para atrapar errores): los mensajes que imprimes se mandan al navegador a través de respuestas HTTP, cosa que es genial si utilizas JSON o XML porque no romperá su codificación.

Esto hace que FirePHP no sólo sea ideal para debuggear tus peticiones Ajax, sino toda tu base de código PHP.

¿Qué es FirePHP?

FirePHP es una extensión para una extensión; extiende la popular herramienta Firebug con una API para desarrolladores de aplicaciones web en PHP. FirePHP es gratuita y se puede obtener fácilmente mediante la sección Mozilla Add-Ons del sitio oficial de Mozilla.

10-02_preview

¿Qué se necesita?

Para comenzar a utilizar FirePHP, necesitamos:

  1. Firefox
  2. Firebug
  3. FirePHP

La instalación de estas tres cosas es bastante simple. En el caso de FirePHP, también te será de utilidad este enlace.

Un par de consejos

Una vez que hayas instalado FirePHP, y lo hayas incluido en tu aplicación web, estás listo para registrar y debuggear y registrar información. Pero primero, unos consejos:

Consejo #1: No olvides usar ob_start()

Debido a que la información se envía a Firebug en las cabeceras HTTP, debes activar el búfer de salida o de lo contrario, podrías toparte con un mensaje de que “las cabeceras ya han enviado el mensaje”. Puede parecer complicado, pero todo lo que tienes que hacer es escribir ob_start () en la primera línea del script PHP que estás depurando.

Consejo #2: No te olvides de deshabilitar el logging FirePHP cuando estés en vivo

Debes desactivar FirePHP cuando el sitio funcione normalmente o corres el riesgo de exponer información sensible a cualquiera que tenga Firebug / FirePHP instalado (hablaremos acerca de cómo hacer esto más tarde en el artículo). También es buena idea desactivar o suspender Firebug y FirePHP cuando simplemente navegas por la web ya que pueden ralentizar algunos sitios y aplicaciones web (como Gmail, por ejemplo).

Comenzando con el registro FirePHP

Esta es la parte divertida en la que inicia el registro (log) de mensajes y se revisan las funciones básicas de la registración.
Una cosas a notar es que, al igual que PHP es un lenguaje “pseudo-orientado a objetos”, se puede utilizar FirePHP a modo de procedimiento o de forma orientada a objetos (abreviado a partir de ahora OO).

La API OO permite crear una instancia de un objeto de Firebug para usarlo o para llamar a sus métodos estáticos directamente.

Instanciando el objeto API OO

En tu script, puedes utilizar el siguiente bloque de código para crear el objeto FirePHP ($firephp).

require_once(’FirePHPCore/FirePHP.class.PHP’);
$firephp = FirePHP::getInstance(true);
$firephp -> [classmethod]

OO API con métodos estáticos

Este es el formato para llamar métodos estáticos en tu script:

require_once(’FirePHPCore/fb.PHP’);
FB::[nameofmethod]

La API de procedimiento

Así se usa la API de procedimiento de FirePHP:

require_once(’FirePHPCore/fb.PHP’);
fb($var)
fb($var, ‘Label’)
fb($var, FirePHP::[nameofmethod])

Mensajes de registro e información en la consola Firebug

Hablemos de mensajes de registro en la consola Firebug (recuerden que esto sólo funcionará si han configurado su aplicación para FirePHP).

Ejemplos de llamadas de registro básicas

Si estás depurando un bug ad-hoc, los siguientes ejemplos serán los que te interesará usar.

Fb::log(”log message”) Esto imprimirá un string que pasas dentro de tu consola Firebug. Utilizando el ejemplo de arriba resulta el siguiente mensaje:

10-03_log-msg

Fb::log($array, “dumping an array”) Pasando un array da salida al contenido de tu array. El ejemplo anterior dará como resultado el siguiente mensaje en tu consola Firebug:

10-04_dump-msg

Nota: cuando se pasa el cursor sobre las variables logueadas en la consola de Firebug, una ventana de información aparecerá en la página web que contiene todos sus elementos. Es una ingeniosa característica, ¿No te parece?

10-05_variable-viewer

Registrando un mensaje de información

Aquí hay un ejemplo de registro de mensajes de información utilizando el método info.

Fb::info(”information”) Este es el mensaje que se registra en tu consola Firebug:

10-06_info-msg

Registrando un mensaje de advertencia

Aquí hay un ejemplo de registro de mensaje de advertencia.

Fb::warn(”this is a warning”) Este es el mensaje que se registra en tu consola Firebug:

10-07_warning-msg

Registrando un mensaje de error

Aquí hay un ejemplo de registro de mensaje de advertencia utilizando el método de información.

Fb::error(”error message”) Así luce un mensaje de error en tu consola Firebug:

10-08_error-msg

Habilitando o deshabilitando un registro FirePHP

Cuando tu sitio esté “en vivo” (es decir, funcional), debes deshabilitar el registro FirePHP. Para esto llama la siguiente línea de código en las primeras líneas de tu script.

FB::setEnabled(false); Lo genial de esto es que puedes dejar todo tu código FirePHP en tus scripts para usarlo más tarde, sólo pontrue o false cuándo desees activar o desactivar el registro, respectivamente.

Si tu aplicación utiliza un “config file” para seguir el rastro de las configuraciones locales, es recomendable programar una opción de configuración para habilitarlo o deshabilitarlo.

Conclusión

Antes que nada, aquí hay una captura de pantalla que muestra todos nuestros mensajes Firebug juntos:

10-09_console-demo

En este artículo, hemos cubierto las cosas básicas de utilizar FirePHP para ayudarte a debuggear y obtener información sobre las aplicaciones PHP/Ajax de forma fácil y a través del navegador. Utilizar FirePHP es muy fácil y conveniente y verdaderamente brinda muchas más opciones e información para propósitos de debuggeo.

Fuente: Six Revisions

No hay comentarios: