Cualquiera que haya programado en PHP viniendo de lenguajes como C,C++,etc. se habrá encontrado con la misma desagradable sorpresa: ¿cómo depuro mis programas? ¿y los breakpoints? Si bien este problema quedaba resuelto soltando unos cuantos dólares en Zend Studio y unos paseos por la configuración del servidor, no es una solución válida en cualquier entorno (no siempre se tiene acceso a instalar software en los servidores).
Por lo tanto sólo nos quedaba la solución más antigua del mundo: usar la salida por pantalla para sacar valores de variables y puntos de control. Este parche sirve siempre que la salida sea algo puntual y se limite a pequeños valores (nunca en producción, recordad la OWASP) y estos sean tipos de datos básicos. En cuanto necesitamos mostrar diccionarios,arrays o, simplemente, esa salida sea desde una respuesta por AJAX, estamos vendidos. Pero, "que no panda el cúnico", hace tiempo está con nosotros FirePHP.
FirePHP es un kit formado por una extensión para Firefox, concretamente para Firebug, y un conjunto de funciones PHP con el objetivo de realizar una depuración limpia, útil y elegante. Según sus propios creadores FirePHP está especialmente diseñado para nuestras aplicaciones AJAX, y además es capaz de parsear las salidas en formato JSON y XML, mostrándonos los datos estructurados.
La forma de usarlo es muy sencilla. Disponemos de una función llamada FB::setEnabled() que sirve para habilitar o deshabilitar la salida a Firebug. Como bien dicen en el tutorial para AJAX, la mejor forma de hacerlo es mediante el uso de los ficheros de configuración INI:
$settings = @parse_ini_file('settings.ini'); if ($settings['FirePHP'] == 'Enabled') { FB::setEnabled(true); } else { FB::setEnabled(false); }
Y ya estaría todo listo para comenzar a sacar el debug sin más complicación, usando las funciones que nos ofrece para filtrar nuestros mensajes según el tipo:
FB::log('Mensaje de log'); FB::info('Mensaje de informacion, con icono azul'); FB::warn('Esto sería un warning, con icono amarillo'); FB::error('Mensaje de error, con icono rojo');
Página del producto | FirePHP Tutorial para AJAX | christophdorn.com