Depuração com Spoon e referências a objetos

Seguimos investigando as primeiras noções com as bibliotecas Spoon: mostrar mensagens de depuração e armazenar referências a objetos.

Por Miguel Angel Alvarez - Tradução de JML


Publicado em: 20/6/10
Valorize este artigo:
Spoon é um pacote de código realizado com programação orientada a objetos em PHP 5, do qual já explicamos suas generalidades e vimos um artigo para aprender a incluí-lo em nossas páginas web.

Agora vamos ver algumas observações sobre o uso de Spoon, como realizar umas mensagens de depuração, para mostrar o estado das variáveis e veremos também como armazenar referências a objetos. Tudo isso são tarefas muito elementares.

Depuração com Spoon

Quando estamos desenvolvendo e especialmente em fase de depuração de nossos scripts é bom mostrar na página o estado de nossas variáveis. Tudo isto se pode fazer de uma maneira tradicional, por meio da função var_dump de PHP e agregando uma etiqueta PRE para que nos pré-formate a saída e possamos lê-la melhor na página.

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

Porém, Spoon dispõe de uma função para fazer isso mesmo, porém escrevendo menos código.

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

Nota: Este código está invocando à função estática dump() que há no pacote ou clase Spoon. O operador :: serve justamente para invocar um método estático, a partir do nome da classe.

O método dump() da classe Spoon recebe como primeiro parâmetro a variável ou objeto que queremos inverter na tela e como segundo parâmetro um booleano que serve para indicar se desejamos ou não deter a execução da página chegado a esse ponto.

Agora podemos ver um código completo de uma página que mostra várias variáveis através do método dump() de Spoon.

<?php
//Definir o diretório onde está a pasta com as bibliotecas
define('PATH_LIBRARY', 'C:/xampp/htdocs/');

// Adicionar esse diretório à rota de includes
set_include_path(get_include_path() . PATH_SEPARATOR . PATH_LIBRARY);

//incluo as bibliotecas básicas de Spoon
require_once 'spoon/spoon.php';

//imprimo por tela variáveis simples
$string = 'spoon library';
$int = 13;
$float = 1.3;
Spoon::dump($string, false);
Spoon::dump($int, false);
Spoon::dump($float, false);

//defino uma classe qualquer com PHP 5
class QualquerCoisa{
   public $x;
   private $y;
   var $z;
   
   function __construct($x,$y,$z){
      $this->x = $x;
      $this->y = $y;
      $this->z = $z;
   }
}

//crio um objeto
$objeto = new QualquerCoisa("olá", "provando", "qualquercoisa");
//imprimo por tela as propriedades desse objeto
Spoon::dump($objeto, false);
?>

Referências a objetos

Spoon dispõe de uma espécie de registro interno onde podemos armazenar referências a objetos. Podemos escolher o nome que quisermos dar à referência a cada objeto dentro do registro e dispomos de três métodos para operar com estas referências, para criá-las, acessar aos objetos que há nelas e eliminá-las.

À princípio, até onde chegamos neste manual sobre Spoon, talvez não tenha muito sentido comentar estas referências, porém junto com dump() são os métodos que existem na classe principal: Spoon.

Vejamos o código seguinte:

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

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

//defino uma classe qualquer com PHP 5
class QualquerCoisa{
   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;
   }
}

//Crio um objeto
$object = new QualquerCoisa(1,2,3);

//Adiciono o objeto ao registro de Spoon
Spoon::setObjectReference('theNameIWant', $object);

//faço algo com o objeto
Spoon::getObjectReference('theNameIWant')->sumar();

//faço o dump do objeto
Spoon::dump(Spoon::getObjectReference('theNameIWant'), false);

//destruo a referência
Spoon::killObjectReference('theNameIWant');
?>

No anterior código se cria um objeto e se salva uma referência no registro com setObjectReference(). Logo, através de getObjectReference() acesso ao objeto salvo e posso invocar seus métodos ou mostrá-lo em tela com o método dump() visto anteriormente. Por último se mostra como se destrói a referência no registro, a partir do método killObjectReference().






Usuários :    login / registro

Manuais relacionados
Categorias relacionadas
O autor

Home | Sobre nós | Copyright | Anuncie | Entrar em contato