# FireCake
FireCake es una implementación del protocolo FirePHP para CakePHP. También provee una salida similar a la que se obtiene con los paneles de la barra de herramientas contenidas en DebugKit para peticiones que no sean HTML. Para utilizar FireCAke en peticiones HTML solo es necesario incluir ```App::import('Vendor', 'DebugKit.FireCake');``` en el código para cargar la clase.
## Comenzando
Para poder comenzar a utilizar FireCake es necesario que utilices [ FireFox](http://getfirefox.com) y tengas instalado tanto [ Firebug](http://getfirebug.com) como [ FirePHP](http://firephp.org). Al momento de escribir este texto, FirePHP no funciona bajo ningún otro navegador.
## Utilizando FireCake
FireCake cuenta con una cantidad de métodos que son invocados estáticamente. A diferencia de otras librerìas basadas en FirePHP, no es necesario obtener una instancia de FireCake para comenzar a utilizarlo. Toda la información de depuración generada por FireCake puede ser encontrada en la pestaña o tab "Console" o en la sub pestaña "Server" de la petición.
### Logging
Varios niveles de logueo pueden ser utilizados, entre los que se incluyen **info**, **log**, **warn** and **error**. Todas estas funciones generan mensajes en la consola de Firebug pero difieren en el color que tiene cada uno de estos mensajes. Los métodos y las firmas de los mismos se detallan a continuación:
FireCake::log($mensaje, $etiqueta = null);
Genera un mensaje de bajo nivel
FireCake::info($mensaje, $etiqueta = null);
Genera un mensaje informativo.
FireCake::warn($mensaje, $etiqueta = null);
Genera un mensaje de advertencia.
FireCake::error($mensaje, $etiqueta = null);
Genera un mensaje de error.
Todos los mensajes mencionados se visualizan en la pestaña "console" de Firebug.
### firecake()
En conjunto con los métodos mencionados anteriormente, FireCake crea una función global llamada ```firecake()```. Esta función es simplemente un atajo a la función ```FireCake::log()```, y por lo tanto tiene los mismos argumentos.
### Generación de información en tablas
FireCake también soporta la generación de información en forma de tablas. Las tablas son creadas al invocar el método ```FireCake::table($etiqueta, $mensaje);``` el parámetro ```$mensaje``` debe una matriz (vector multidimensional) que represente las filas y las columnas de la tabla.
$tabla[] = array('Col 1 Encabezado','Col 2 Encabezado');
$tabla[] = array('Fila 1 Col 1','Fila 1 Col 2');
$tabla[] = array('Fila 2 Col 1','Fila 2 Col 2');
$tabla[] = array('Fila 3 Col 1','Fila 3 Col 2');
FireCake::table('myTrace', $tabla);
Generará una tabla como la siguiente:
<table>
<tr><th>Col 1 Encabezado </th><th>Col 2 Encabezado</th></tr>
<tr><td>Fila 1 Col 1</td><td>Fila 1 Col 2</td></tr>
<tr><td>Fila 2 Col 1</td><td>Fila 2 Col 2</td></tr>
<tr><td>Fila 3 Col 1</td><td>Fila3 Col 2</td></tr>
</table>
Esta tabla estará presente en el pestaña **console** de Firebug.
### Generando una traza de la ejecución
FireCake también puede ser utilzado para crear trazas de la ejecución. Estas son similares a las que provee Debugger::trace() en sus trazas pero provee información adicional acerca de los argumentos utilizados en los métodos.
FireCake::trace($etiqueta);
Esta línea generará una traza de ejecución al momento de ser invocada.
### Volcado de variables
FireCake::dump($etiqueta, $mensaje);
Las variables volcadas podrán ser visualizadas en la pestaña **server** para la petición específica en la que se haya ejecutado, dentro de la pestaña **net** de Firebug. Las variables volcadas pueden ser colapsadas para ajustar el espacio que ocupan al hacer click sobre ellas.
### Configuración
```FireCake``` puede ser configurado mediante el método estático ```FireCake::setOptions();```. Las siguientes son algunas de las opciones de configuración.
- **maxObjectDepth** La profundidad máxima que se deberá alcanzar al realizar la introspección de un objeto que será convertido en cadena y encodeado a JSON. Valor por defecto 10
- **maxArrayDepth** La profundidad máxima que se deberá alcanzar al realizar la introspección de un vector o matriz que será convertido en cadena y encodeado a JSON. Valor por defecto 20
- **useNativeJsonEncode** Permite definir si se utilizará la función ```json_encode``` en el caso de que esté disponible. Valor por defecto true. Se recomienda dejar este valor en true.
- **includeLineNumbers** Permite definir si se visualizarán los números de las líneas del código cuando se pose el mouse sobre un mensaje generado en la consola. Valor por defecto true.
Setting options is done by passing an array of the options you wish to change into ```FireCake::setOptions()```
La configuración de las opciones se logra utilizando un vector con las opciones que desees cambiar al llamar al método estático ```FireCake::setOptions()```. Por ejemplo:
FireCake::setOptions(array('includeLineNumbers' => false));
Solo modificará el valor de la opción de configuración ```includeLineNumbers```.
### Desactivar los mensajes de FireCake
Es posible que bajo alguna condición quieras desactivar los mensajes generados por FireCake sin tener que remover los llamados a ```FireCake```. Es posible desactivar ```FireCake``` utilizando ```FireCake::disable()```. Una vez desactivados puedes volver a activar ```FireCake``` durante la petición con ```FireCake::enable()```.
