Destrutores em PHP 5

Os destrutores são funções que se encarregam de realizar as tarefas que se necessita executar quando um objeto deixa de existir. Quando um objeto já não está referenciado por nenhuma variável, deixa de ter sentido que esteja armazenado na memória, portanto, o objeto deve ser destruído para liberar seu espaço. No momento de sua destruição, a função se chama destrutor, que pode realizar as tarefas que o programador estime oportuno realizar.

A criação do destrutor é opcional. Somente devemos criá-lo, se desejarmos fazer alguma coisa quando um objeto se elimine da memória.

O destrutor é como qualquer outro método da classe, embora deve se declarar com um nome fixo: __destruct().

No código seguinte veremos um destrutor em funcionamento. Embora a ação que se realiza ao destruir o objeto não é muito útil, pode nos servir bem para ver como trabalha.

class cliente{
var $nome;
var $numero;
var $filmes_alugados;

function __construct($nome,$numero){
$this->nome=$nome;
$this->numero=$numero;
$this->filmes_alugados=array();
}

function __destruct(){
“<br>destruido: ” . $this->nome;
}

function dame_numero(){
return $this->numero;
}
}

//instanciamos dois objetos cliente
$cliente1 = new cliente(“Pedro”, 1);
$cliente2 = new cliente(“Roberto”, 564);

//mostramos o numero de cada cliente criado
“O identificador do cliente 1 é: ” . $cliente1->dame_numero();
“<br>O identificador do cliente 2 é: ” . $cliente2->dame_numero();

Este código é igual que o anterior. Somente acrescentamos o destrutor, que imprime uma mensagem na tela com o nome do cliente que foi destruído. Depois de sua execução obteríamos a seguinte saída.

O identificador do cliente 1 é: 1
O identificador do cliente 2 é: 564
destruído: Pedro
destruído: Roberto

Como vimos, antes de acabar o script, libera-se o espaço na memória dos objetos, com o qual se executa o destrutor e aparece a correspondente mensagem na página.

Um objeto pode ficar sem referências e, portanto, ser destruído, por muitas razões. Por exemplo, o objeto pode ser uma variável local de uma função e ao finalizar a execução dessa função local deixaria de ter validade, sendo então destruído.

O código seguinte ilustra como uma variável local a qualquer âmbito (por exemplo, local a uma função), se destrói quando esse âmbito foi finalizado.

function cria_cliente_local(){
$cliente_local = new cliente(“sou local”, 5);
}
cria_cliente_local()

A função simplesmente cria uma variável local que contem a instanciação de um cliente. Quando a função se acaba, a variável local deixa de existir, e então, chama-se ao destrutor definido para esse objeto.

Nota: Também podemos nos desfazer de um objeto sem a necessidade de acabar com o âmbito onde foi criado. Para isso, temos a função unset() que recebe uma variável e a elimina da memória. Quando se perde uma variável que contem um objeto e esse objeto deixa de ter referências, elimina-se ao objeto e chama-se ao destrutor.

Fonte: http://www.criarweb.com/artigos/337.php

Deixe um comentário