Introducción a FirePHP [Tutorial]

Iniciado por madpitbull_99, 21 Marzo 2011, 22:59 PM

0 Miembros y 1 Visitante están viendo este tema.

madpitbull_99

Tutorial de FirePHP
=======================



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 (php) [Seleccionar]
<?php ob_start(); ?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>untitled</title>
</head>
<body>
</body>
</html>
<?php ob_end_flush(); ?>


El siguiente paso es incluir el fichero fb.php o fb.php4 si se utiliza PHP 4 en nuestro proyecto.

Código (php) [Seleccionar]
<?php ob_start(); 
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>
<?php ob_end_flush(); ?>



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) [Seleccionar]
<?php 
 $variable 
'probando firephp';
 
FB::log('Hola mundo!');
 
FB::log($variable);
?>


Y el resultado seria el siguiente:



Para especificar el nombre de la variable o algún mensaje descriptivo agregamos lo siguiente:

Código (php) [Seleccionar]
<?php 
 $variable 
'probando firephp';
 
FB::log('Hola mundo!');
 
FB::log($variable'Mi variable');
?>


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) [Seleccionar]
<?php 
 FB
::info('Esto es muy importante!');
?>




A parte de los mensajes informativos también podemos hacer advertencias:

Código (php) [Seleccionar]
<?php 
 FB
::warn('Esto es una advertencia!');
?>




O mostrar algún error:

Código (php) [Seleccionar]
<?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 (php) [Seleccionar]
<?php ob_start(); 
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::log('Hola mundo!');
 
FB::log($variable'Mi variable');
 
 
FB::info('Esto es muy importante!');
 
 
FB::warn('Esto es una advertencia!');
 
 
FB::error('Esto es un error!');
?>

</body>
</html>
<?php ob_end_flush(); ?>


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 (php) [Seleccionar]
<?php ob_start(); 
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::log('Hola mundo!');
 
FB::log($variable'Mi variable');
 
 
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>
<?php ob_end_flush(); ?>


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) [Seleccionar]
<?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 (php) [Seleccionar]
<?php ob_start(); 
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 
 
 $miArray 
= array (
 array(
'Asignatura''Profesor'),
 array(
'Matematicas''Pedro Sanchez'),
 array(
'Lengua''Soraya Labrada'),
 array(
'Biologia''Mercedes Lara')
 
 ); 
//Un array que contiene otros arrrays.
 
 
FB::table('Tabla de Asignaturas'$miArray);

?>

</body>
</html>
<?php ob_end_flush(); ?>


Y en la consola veremos nuestro array representado en una tabla:



También podemos mostrar un array en forma de log:

Código (php) [Seleccionar]
<?php 
 
 $miArray 
= array(1,2,3,4,5,6,7,8,9);
 
 
FB::log($miArray);

?>


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 (php) [Seleccionar]
<?php ob_start(); 
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>
<?php ob_end_flush(); ?>


Y mostrara como mensaje informativo lo que devuelve nuestro metodo. Para ver el contenido de una clase entera se haria asi:

Código (php) [Seleccionar]
<?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.



«Si quieres la paz prepárate para la guerra» Flavius Vegetius


[Taller]Instalación/Configuración y Teoría de Servicios en Red

Aeros

tremendo!!! probando

muchas gracias!