=======================
FirePHP es un plugin para FireFox utilizado por desarrolladores web para realizar la depuración
de las aplicaciones.
En principio se creo el plugin Firebug que se utiliza para debuggear "interfaces web" o lo que viene a
ser las paginas web estáticas. Para la depuración de las aplicaciones del lado del servidor se ha creado
el plugin llamado FirePHP.
Para utilizar este plugin hay que descargarlo e instalarlo desde la pagina oficial de addons de Firefox (http://addons.mozilla.org) y
descargar unos scripts en PHP para "conectar" la aplicación PHP con la consola de FirePHP.
Después de instalar el plugin hacemos clic en el icono de la cucaracha y abrimos la consola.
Una vez instalado el plugin nos dirigimos a su pagina oficial y descargamos los ficheros necesarios que debamos incluirnos en nuestro
proyecto para poder usarlo. La pagina oficial es (http://firephp.org).
Uno de esos ficheros deberemos incluirlo en nuestro proyecto web.
Para hacer las pruebas creen un script PHP y llamadlo como queráis. Lo primero que debemos hacer en nuestro proyecto
es habilitar el buffer de salida, para eso instanciamos el objeto ob_start(), nuestro script quedara algo así:
Código
<!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>untitled</title> </head> <body> </body> </html>
El siguiente paso es incluir el fichero fb.php o fb.php4 si se utiliza PHP 4 en nuestro proyecto.
Código
include('includes/FirePHPCore/fb.php'); ?> <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>untitled</title> </head> <body> <?php echo "Hola"; //Para probar que PHP funciona ?> </body> </html>
Los métodos incluidos en la clase FirePHP pueden ser instanciados de forma estática.
Para añadir un log o hacer un pequeño Hola Mundo con FirePHP podemos usar el objeto log:
<?php
FB::log('Hola mundo!');
?>
Ahora si miramos en la consola veremos nuestro mensaje.
Si no muestra ningún mensaje hay que asegurarse de que FirePHP esta habilitado, Menu Herramientas --> FirePHP --> FirePHP Enabled (tiene que estar marcado)
Os preguntareis básicamente para que sirve esto? Cuando debuggeamos una aplicación podemos cambiar el típico echo 'el objeto/función X esta funcionando'; por
un mensaje o log en este caso que se muestre en la consola del plugin.
También podemos usarlo para depurar el contenido de las variables:
Código
<?php $variable = 'probando firephp'; ?>
Y el resultado seria el siguiente:
Para especificar el nombre de la variable o algún mensaje descriptivo agregamos lo siguiente:
Código
<?php $variable = 'probando firephp'; ?>
Y en el resultado nos mostraría el nombre de la variable o el texto descriptivo indicado.
Para mensajes informativos se emplea el método info:
Código
<?php FB::info('Esto es muy importante!'); ?>
A parte de los mensajes informativos también podemos hacer advertencias:
Código
<?php FB::warn('Esto es una advertencia!'); ?>
O mostrar algún error:
Código
<?php FB::error('Esto es un error!'); ?>
Hay que asegurarse que no estamos usando FirePHP en un entorno de producción o en alguna web corporativa, ya que, puede ser bastante inseguro.
FirePHP se puede deshabilitar usando otro método booleano llamado SetEnabled(false/true), quedaría algo así:
Código
include('includes/FirePHPCore/fb.php'); FB::SetEnabled(false); ?> <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>untitled</title> </head> <body> <?php $variable = 'probando firephp'; FB::info('Esto es muy importante!'); FB::warn('Esto es una advertencia!'); FB::error('Esto es un error!'); ?> </body> </html>
O simplemente borrar las lineas referentes a FirePHP. Si refrescamos la pagina veremos que los mensajes ya no aparecen en la consola y no debemos
preocuparnos por la seguridad.
Para agrupar los mensajes FirePHP nos provee una funcionalidad que permite crear grupos para mostrar los diferentes mensajes en la consola del
plugin. Un ejemplo de como funcionan los grupos lo tenéis abajo:
Código
include('includes/FirePHPCore/fb.php'); FB::SetEnabled(true); ?> <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>untitled</title> </head> <body> <?php FB::group('Este es el primer grupo'); // Indica el inicio y el nombre del grupo. $variable = 'probando firephp'; FB::info('Esto es muy importante!'); FB::warn('Esto es una advertencia!'); FB::error('Esto es un error!'); FB::GroupEnd(); // Indica el fin del grupo. ?> </body> </html>
Y el resultado seria la agrupación de los mensajes:
Imaginémonos que no queremos mostrar en la pagina web los mensajes de error de PHP y que solo se vean en la consola, creamos un objeto a partir de la clase
FirePHP e instanciamos los métodos registerExceptionHandler y registerErrorHandler.
Código
<?php $obj = new FirePHP(); $obj->registerExceptionHandler(); $obj->registerErrorHandler(); echo $variableSinDefinir; ?>
Y el mensaje de error seria mostrado directamente en la consola y no en la pantalla a la vista de todos.
FirePHP permite debuggear hasta tablas o arrays. Se hace con el método table, el primer parámetro es un nombre descriptivo y el segundo es el array.
Código
include('includes/FirePHPCore/fb.php'); FB::SetEnabled(true); ?> <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>untitled</title> </head> <body> <?php ); //Un array que contiene otros arrrays. FB::table('Tabla de Asignaturas', $miArray); ?> </body> </html>
Y en la consola veremos nuestro array representado en una tabla:
También podemos mostrar un array en forma de log:
Código
<?php ?>
Y nos mostrara algo parecido a lo de abajo, si hacemos clic en el mensaje informativo nos abrira una especie de popup con el
contenido del array:
Si no fuera bastante, FirePHP soporta tambien las clases y los objetos, o lo que viene siendo la POO.
Código
include('includes/FirePHPCore/fb.php'); class MiClase { function hacerAlgo() { return 'Hola mundo desde POO'; } } ?> <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>untitled</title> </head> <body> <?php $obj = new MiClase(); FB::info($obj->hacerAlgo()); ?> </body> </html>
Y mostrara como mensaje informativo lo que devuelve nuestro metodo. Para ver el contenido de una clase entera se haria asi:
Código
<?php $obj = new MiClase(); FB::info($obj); ?>
Esto es todo, claramente se pueden hacer mas cosas con FirePHP, os recomiendo que visiteis la web del plugin (firephp.org) donde tienen una
wiki (firephp.org/wiki) con muchos tutoriales y documentacion.