Desenvolvimento - PHP

PHP 5 - Construtores e Destrutores

Num mini-artigo simples e de fácil compreensão, irei tentar explicar algumas particularidades que estão sendo adicionadas ao PHP 5.

por Marcelo Pereira Fonseca da Silva



Num mini-artigo simples e de fácil compreensão, irei tentar explicar algumas particularidades que estão sendo adicionadas ao PHP 5.
Assunto que está sendo muito discutido em todo o mundo.

Basicamente não vou fazer aqui um super artigo tentando passar tudo sobre Orientação à Objeto, nem sobre as vantagens disso, ou ainda sair adicionando códigos "estranhos" que muitos não iriam entender.

Antes de começar a falar sobre o assunto do artigo, explico os motivos pelo qual estou escrevendo-o.

Creio eu que haja uma deficiência em apresentar os novos features de OO no PHP5 se existe hoje uma boa parcela de programadores que ainda não iniciaram em Orientação à Objeto.

Então irei explicar alguns códigos que tenho visto em PHP5 voltados à OO e tentar explicar qual a diferença que existe hoje no PHP4.

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 a 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 pao 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 Marcelo {

    var $variable;
    var $add_body;
    /**
     * Método construtor 
     */
    function __construct()
    {
         $this->variable = "do anything";
    }

    /**
     * Método que cria meu 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 Marcelo();
$myself->make_body("cabeça");
$myself->make_body("pé");
$myself->make_body("asas");  // i go to fly :)

Espero ter ajudado mostrando um dos novos recursos que estarão no PHP5

Fonte: http://www.phpvolcano.com

Até o próximo artigo.

Marcelo Pereira Fonseca da Silva

Marcelo Pereira Fonseca da Silva - Presta consultoria em desenvolvimento de aplicações em PHP e atua como desenvolvedor web em uma empresa especializada, é também um dos membros de tradução do manual do PHP e participa ativamente de melhorias para a linguagem. Trabalho também com GNU/Linux entre outras tecnologias.