PHP 5.4.36 Released

Constructors

Construtores são funções em uma classe que são automaticamente chamados quando você cria uma nova instância desta classe utilizando o operador new. Um método (função) se torna um construtor em PHP 4, quando ele possui o mesmo nome que sua classe. Se uma classe não tem método construtor, o construtor da classe base (classe 'pai') será então chamado se existir.

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

Isto define a classe Auto_Cart que é um Cart com a adição de um construtor que inicializa o carrinho com um item do artigo de número '10' toda vez que um novo Auto_Cart é criado utilizando "new". Construtores podem receber argumentos e estes argumentos podem ser opicionais, o que os tornam muito mais úteis. Para ser possível utilizar a classe sem parâmetros, todos os parâmetros do construtor devem ser criados como opicionais atribuindo-se valores padrões para os mesmos.

<?php
class Constructor_Cart extends Cart {
    function 
Constructor_Cart($item "10"$num 1) {
        
$this->add_item ($item$num);
    }
}
 
// Utilizando os valores padrões presentes no construtor
$default_cart = new Constructor_Cart;
 
// Setando novos parâmetros
$different_cart = new Constructor_Cart("20"17);
?>

Você também pode utilizar o operador @ para esconder os erros que eventualmente ocorrem na utilização do construtor (Ex.: @new) mas isto em geral não é uma boa prática.

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

    function 
B()
    {
        echo 
"Eu sou um método qualquer chamado B pertencente a classe A.<br />\n";
        echo 
"Eu não sou o construtor de A.<br />\n";
    }
}

class 
extends A
{
}

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

O método (função) B() da classe A irá se tornar o construtor da classe B, apesar de que essa talvez não fosse a real intenção. O PHP 4 não se importa se o método foi definido na classe B ou se foi herdado.

Cuidado

O PHP não chama automaticamente os construtores das classes bases (pais) em um construtor de uma classe derivada. É de sua responsabilidade propagar a chamada apropriadamente caso esta seja sua intenção.

Destrutores são métodos (funções) que são chamadas automaticamente quando um objeto é destruido, seja via unset() ou simplesmente por ter sua execução terminada. Não existem destrutores em PHP. Você pode utilizar register_shutdown_function() para simular a maioria dos efeitos dos destrutores.

add a note add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top