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é");

