Manual do PHP
Anterior | Capítulo 18. Classes e Objetos(PHP 4) | Próxima

# 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 B 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.

Anterior | Principal | Próxima
`extends` | Acima | `::`