Depuración con Spoon y referencias a objetos

  • Por
  • PHP
Seguimos investigando las primeras nociones con las librerías Spoon: mostrar mensajes de depuración y almacenar referencias a objetos.
Spoon es un paquete de código realizado con programación orientada a objetos en PHP 5, del cual ya hemos explicado sus generalidades y hemos visto un artículo para aprender a incluirlo en nuestras páginas web.

Ahora vamos a ver algunas notas sobre el uso de Spoon, como realizar unos mensajes de depuración, para mostrar el estado de las variables y veremos también como almacenar referencias a objetos. Todo tareas muy elementales.

Depuración con Spoon

Cuando estamos desarrollando y especialmente en fase de depuración de nuestros scripts nos viene muy bien mostrar en la página el estado de nuestras variables. Todo esto se puede hacer de una manera tradicional, por medio de la función var_dump de PHP y agregando una etiqueta PRE para que nos preformatee la salida y podamos leerla mejor en la página.

<?php
echo "<pre>";
var_dump($objeto);
echo "</pre>";
?>

Pero Spoon dispone de una función para hacer eso mismo, pero escribiendo ménos código.

<?php
Spoon::dump($objeto, false);
?>

Nota: Este código está invocando a la función estática dump() que hay en el paquete o clase Spoon. El operador :: sirve justamente para invocar un método estático, a partir del nombre de la clase.

El método dump() de la clase Spoon recibe como primer parámetro la variable u objeto que queremos volcar a pantalla y como segundo parámetro un boleano que sirve para indicar si deseamos o no detener la ejecución de la página llegado a ese punto.

Ahora podemos ver un código completo de una página que muestra varias variables a través del método dump() de Spoon.

<?php
//Definir el directorio donde está la carpeta con las librerías
define('PATH_LIBRARY', 'C:/xampp/htdocs/');

// Añadir ese directorio a la ruta de includes
set_include_path(get_include_path() . PATH_SEPARATOR . PATH_LIBRARY);

//incluyo las librerías básicas de Spoon
require_once 'spoon/spoon.php';

//imprimo por pantalla variables simples
$string = 'spoon library';
$int = 13;
$float = 1.3;
Spoon::dump($string, false);
Spoon::dump($int, false);
Spoon::dump($float, false);

//defino una clase cualquiera con PHP 5
class CualquierCosa{
   public $x;
   private $y;
   var $z;
   
   function __construct($x,$y,$z){
      $this->x = $x;
      $this->y = $y;
      $this->z = $z;
   }
}

//creo un objeto
$objeto = new CualquierCosa("hola", "probando", "cualquiercosa");
//imprimo por pantalla las propiedades de ese objeto
Spoon::dump($objeto, false);
?>

Referencias a objetos

Spoon dispone de una especie de registro interno donde podemos almacenar referencias a objetos. Podemos elegir el nombre que queramos darle a la referencia a cada objeto dentro del registro y disponemos de tres métodos para operar con estas referencias, para crearlas, acceder a los objetos que hay en ellas y eliminarlas.

En principio, hasta donde hemos llegado en este manual sobre Spoon, quizás no tenga mucho sentido comentar estas referencias, pero junto con dump() son los métodos que existen en la clase principal: Spoon.

Veamos el código siguiente:

<?php
define('PATH_LIBRARY', 'C:/xampp/htdocs/');
set_include_path(get_include_path() . PATH_SEPARATOR . PATH_LIBRARY);

//incluyo Spoon
require_once 'spoon/spoon.php';

//defino una clase cualquiera con PHP 5
class CualquierCosa{
   public $x;
   private $y;
   var $z;
   
   function __construct($x,$y,$z){
      $this->x = $x;
      $this->y = $y;
      $this->z = $z;
   }
   
   function sumar(){
      $this->x = $this->y + $this->z;
   }
}

//Creo un objeto
$object = new CualquierCosa(1,2,3);

//Añado el objeto al registro de Spoon
Spoon::setObjectReference('theNameIWant', $object);

//hago algo con el objeto
Spoon::getObjectReference('theNameIWant')->sumar();

//dumpeo el objeto
Spoon::dump(Spoon::getObjectReference('theNameIWant'), false);

//destruyo la referencia
Spoon::killObjectReference('theNameIWant');
?>

Nota: Por favor, echa un vistazo al primero de los comentarios de este artículo, que muestran algunos pequeños cambios en el código anterior, que estarían disponibles para simplificar las cosas a partir de la versión 1.2 de Spoon

En el anterior código se crea un objeto y se guarda una referencia en el registro con setObjectReference(). Luego a través de getObjectReference() accedo al objeto guardado y puedo invocar sus métodos o mostrarlo en pantalla con el método dump() visto anteriormente. Por último se muestra cómo se destruye la referencia en el registro, a partir del método killObjectReference().

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

Davy Hellemans

18/5/2010
Version 1.2.0
Hi,

I'm the author of Spoon Library. In the new version (1.2.0) of Spoon you can rewrite this code a bit, since Spoon::setObjectReference now returns the object you are storing in the registry. See my example below.

<?php
...
//Creo un objeto
$object = new CualquierCosa(1,2,3);

//Añado el objeto al registro de Spoon
Spoon::setObjectReference('theNameIWant', $object)->sumar();

//dumpeo el objeto
Spoon::dump(Spoon::getObjectReference('theNameIWant'), false);

//destruyo la referencia
Spoon::killObjectReference('theNameIWant');

?>

crackerness_crk

25/5/2010
Interesante la Librería.
Primero que nada una disculpa le pique al comentario anterior como SPAM por ERROR ! JAjAjaja...

Segundo:

Interesante como ahora se simplifico el código como en el ejemplo del comentario anterior del autor de la librería.

Ojalá puedas seguir poniendo más sobre esta librería.