PHP 5 – Construtores e Destrutores
[ratings]
MÉTODO CONSTRUTOR
Na versão 4 do PHP geralmente dá-se um mesmo nome da classe para um método fazendo com que ele seja executado quando o instanciamos.
Para quem não entendeu imagine a seguinte situação:
Iremos construir uma pequena classe chamada “Pao”.
<?php Class Pao { /** * adiciona itens ao nosso pao */ var $_addItem; /** * este pao() seria o nosso método construtor * Nota: uma função dentro de uma classe recebe o nome de método. /* function Pao() { $this->add_item = "manteiga"; } } ?>
Como vimos no código acima, temos a classe Pao e o método Pao. Ao dar o mesmo nome da classe ao método, automaticamente temos um delicioso pão com manteiga.
E quando isso acontece ?
Quando temos uma porção de código parecida com a que segue:
<?php $objeto = new Pao(); ?>
No Zend Engine 2 há um método para fazer isso tudo, sendo assim, não há a necessidade de se colocar um método com o mesmo nome da função.
Nosso mais novo amigo se chama __construct()
Imaginemos agora uma outra classe chamada “casa” e vamos ver qual a diferença do código passado acima.
<?php Class Casa { /** * Define itens para a nossa casa */ var item; /** * Esta é a forma de um método construtor * no PHP5. */ function __construct() { $this->item = "paredes"; } } ?>
e então ao instanciar a nossa classe
<?php $home_sweet_home = new Casa(); ?>
ele chama este método e já adiciona paredes.
MÉTODO DESTRUTOR
O PHP 5 também traz um outro método chamado método destrutor representado da seguinte maneira
__destruct()
Seu uso pode ser observado no seguinte exemplo:
<?php Class SerHumano { var $variable; var $add_body; /** * Método construtor */ function __construct() { $this->variable = "do anything"; } /** * Método que cria o corpo... * */ function make_body($part) { $this->add_body = $part; } function __destruct() { echo "eu sou um método destrutor"; } } ?>
Um simples uso disso seria:
$myself = new SerHumano(); $myself->make_body("cabeça"); $myself->make_body("pé");