Forum und email

Construtores

Construtores são funções numa classe que são automaticamente chamados quando você cria uma nova instância da classe com new. Uma função se torna um construtor quando ele tem o mesmo nome da classe Se uma classe. não tiver um construtor, o construtor da classe base será chamado, se existir.

<?php
class CarrinhoDeComprasAutomatico extends CarrinhoDeCompras {
    function 
CarrinhoDeComprasAutomatico() {
        
$this->add_item ("10"1);
    }
}
?>

Isto define uma classe chamada CarrinhoDeComprasAutomatico que é um CarrinhoDeCompras mais um construtor que inicializa o carrinho com um item do artigo numero "10" cada vez que um novo CarrinhoDeComprasAutomatico for criado com "new". Construtores pode ter argumentos e esses argumentos podem ser opcionais, o que os torna muito mais práticos. Para permitir a criação de classes sem parâmetros, todos os parâmetros dos construtores pode ser feitos opcionais simplesmente por terem valores default.

<?php
class CarrinhoDeComprasComConstrutor extends CarrinhoDeCompras {
    function 
CarrinhoDeComprasComConstrutor($item "10"$num 1) {
        
$this->add_item ($item$num);
    }
}

// Fazendo compras do mesmo modo antigo
$carrinho_default = new CarrinhoDeComprasComConstrutor;

// Fazendo compres de verdade
$carrinhho_diferente = new CarrinhoDeComprasComConstrutor("20"17);
?>

Você pode usar o operador @ para esconder erros gerados no construtor do objeto, por exemplo: @new.

<?php
class A
{
    function 
A()
    {
        echo 
"Eu sou o construtor de A.<br />\n";
    }

    function 
B()
    {
        echo 
"Eu sou uma função normal chamada B na classe A.<br />\n";
        echo 
"Eu não sou o construtor de A.<br />\n";
    }
}

class 
extends A
{
}

// Isto irá chamar B() como um construtor.
$b = new B;
?>

A função B() na classe A se tornará silenciosamente um construtor na classe B, mesmo que isso nunca tenha sido planejado. O PHP 4 não se importa se a função foi definida na classe B, ou se ela foi herdada.

Cuidado

O PHP 4 não chama automaticamente os construtores da classe base a partir do construtor da classe derivada. É de sua responsabilidade propagar a chamada dos construtores herança acima, onde apropriado.

Destrutores são funções que são chamadas automaticamente quando um objeto é destruído, ou pela utilização de unset() ou pela simples saída do escopo. Não existem destrutores no PHP. Você pode usar register_shutdown_function() ao invés para simular a maioria dos efeitos dos destruidores.