Debug en PostNuke

Marzo 10, 2007

Las tareas de depurado al desarrollar en PHP pueden resultar ser algo tedioso, la verdad es que existen varias formas de hacerlo, desde el simple uso de echo, print_r, vardump, die, etc hasta el uso de sofisticados scripts, clases e IDEs de desarrollo.

Sin embargo cuando depuramos código en nuestros desarrollos en un CMS como PostNuke el depurado de código no es una tarea simple por ello a continuación muestro dos maneras de simplificar el depurado basado en un articulo de Frank Schummertz (Landseer).

#1: La forma sencilla

Utilizar una función de depurado que produce la salida necesaria.

Codigo:

  1. /**
  2. * Función interna de depurado
  3. *
  4. */
  5. function pnfdebug($name='', $data, $die = false)
  6. {
  7. $modname = pnModGetName();
  8. if(pnSecAuthAction(0, $modname . '::', '::', ACCESS_ADMIN)) {
  9. $type = gettype($data);
  10. echo "\n<!-- inicio del depurado de $name -->\n<div style=\"color: red;\">$name ($type";
  11. if(is_array($data)||is_object($data)) {
  12. $size = count($data);
  13. if($size>0) {
  14. echo ", tamaño=$size entradas):<pre>";
  15. echo htmlspecialchars(print_r($data, true));
  16. echo "</pre>:<br />";
  17. } else {
  18. echo "):vacio<br />";
  19. }
  20. } else if(is_bool($data)) {
  21. echo ") ";
  22. echo ($data==true) ? "verdadero<br />" : "falso<br />";
  23. } else if(is_string($data)) {
  24. echo ", longitud=".strlen($data).") :$data:<br />";
  25. } else {
  26. echo ") :$data:<br />";
  27. }
  28. echo "</div><br />\n<!-- fin del depurado de $name -->";
  29. if($die==true) {
  30. die();
  31. }
  32. }
  33. }

(Tomado de pnForum y ligeramente mejorado).

Se necesita ACCESS_ADMIN (acceso de administrador) para el modulo que se quiere depurar. El motivo de incluir esto es que se puede dejar el código de depurado en un sitio on-line para continuar el depurado sin que tus usuarios se den cuenta de esto.

#2: La forma difícil

Utilizar debugconsole si es que utilizas PHP 5.0.1 o superior.
Primeramente hay que copiar todos los archivos (excepto example.php) en includes/classes/debugconsole/ y actualizar el archive principal (index.php) para que se parezca a lo siguiente:

Codigo

// código normal hasta phpInit(), luego agregar:
include 'includes/classes/debugconsole/debugConsole.php';

// ahora agregamos las variables que queremos mostrar
dc_watch('modulo');
dc_watch('variable');

declare(ticks=1) {
    // inicia un cronometro para observar cuanto se demora el modulo en ejecutarse
    $myTimer = dc_start_timer('Tiempo de Ejecución:');

// El código original del index.php va aquí

    // fin del cronometro
    dc_stop_timer($myTimer);
}

Esto abrirá una popup javascript (asegúrate que tu navegador esta configurado para aceptarlos) mostrando un sin numero de información de depurado y más. Para mayor información sobre las opciones y posibilidades de la clase debugconsole dirígete a su documentación

Enlaces relacionados:
debugconsole

 

Entrada almacenada bajo: PHP, PostNuke

Este post ha sido visto 761 veces

Envia comentario

Obligatorio

Obligatorio

Algunas etiquetas HTML estan permitidas:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>

Conectate a este comentario  |  Suscribete a los comentarios via RSS Feed



Mira tambien

Feeds

 Suscribirse por feed

Suscribirse por mail