Nesta aula estudaremos a implementação de funções destrutoras que são invocadas no momento que precede a remoção de uma instância da memória. |
DESTRUTORES
A linguagem PHP tem definido uma função que é invocada todas as vezes em que uma instância estiver sendo criada e também, possui uma função que será invocada, todas as vezes em que um instância estiver sendo destruida.
A função que destruira a instância e removerás qualquer valor associado possui o nome de __destruct().
Basicamente, podemos dizer que o destrutor é invocado quando nenhuma variável estiver referenciando este, ou então, quando a função unset() for invocada passando como parâmetro a instância.
A função destrutor de uma classe sempre será invocado antes da classe ser removida da memória, portanto, somos capazes de executar qualquer código antes que a instância seja destruida.
FUNÇÃO QUE DESTROI A INSTÂNCIA PASSADA COMO PARÂMETRO
Já trabalhamos com a função unset() quando estavamos estudando Arrays, e fizemos uso da mesma para removermos um elemento da estrutura e também, remove-lo da memória.
Durante a implementação de destrutores iremos fazer uso extensivo da função unset(), haja vista que essa é a maneira mais simples e segura que um objeto realmente será destruido, ou melhor, será enviado para o Garbage Collector.
A melhor maneira para testarmos se a função de destruição de um objeto está funcionando corretamente.
Vale ressaltar que a função unset() ocasiona da destruição e remoção dos valores da memória de maneira irreversível, após invocarmos passando como parâmetro uma instância, não existira função para voltar atrás.
A função unset() desvincula uma instância de toda e qualquer estrutura ou então, outra instância.
GARBAGE COLLECTOR
O coletor de lixo, ou então, o Garbage Collector é uma entidade especializada em remover os dados da memória que não estão mais sendo utilizados.
A utilização de um coletor de lixo simplifica o trabalho do programador e evitar a grande maioria dos problemas de software, até porque, fazer acesso a uma região de memória que foi desalocada pode ocasionar problemas bizarros e que são muito dificeis de serem depurados.
Então, pense no coletor de lixo como o agente responsavel em liberar toda e qualquer informação que não esteja mais em uso e principalmente, fazer todo esse trabalho de gerenciamento e averiguação de quais instâncias não estão mais em uso num bloco de instrução.
unset($r);
EXEMPLO FEITO EM AULA
#DESTRUTORES
class Pessoa{
function __construct(){
echo "Função construtora invocada.";
}
function __destruct(){
echo "Função destrutora invocada.";
}
}
$p1 = new Pessoa;
unset($p1);
VEJA TAMBÉM
- Aula 91: Primeira Classe
- Aula 92: Primeira Classe
- Aula 93: Criação de Objetos
- Aula 94: Acessando Membros de Classe
- Aula 95: Implementando Funcionalidades na Classe
- Aula 96: Pseudo variável $this
- Aula 97: Gerenciando atributos de Classe
- Aula 98: Construtor
- Aula 99: Construtores Personalizados
- Aula 100: Destrutores
- Aula 101: Encapsulamento I
- Aula 102: Encapsulamento II
- Aula 103: Herança I
- Aula 104: Herança II
- Aula 105: Modificadores de Acesso
- Aula 106: Visibilidade das Funções
- Aula 107: Funções Modificadoras
- Aula 108: Sobrescrita de Funções
Tags curso, php, programação orientada a objetos, poo, destrutor, construtor, classe, objeto, instância
Comentários
comments powered by Disqus