Construtores
Cuidado
|
Os
construtores
se
comportam
diferentemente
entre
o
PHP
3
e
o
PHP
4
.
A
semântica
do
PHP
4
é
atualmente
preferencial
.
|
Construtores
são
funções
numa
classe
que
são
automaticamente
chamados
quando
você
cria
uma
nova
instância
da
classe
com
new
.
No
PHP
3
,
uma
função
se
torna
um
construtor
quando
ele
tem
o
mesmo
nome
da
classe
.
No
PHP
4
,
uma
função
se
torna
um
construtor
quando
ele
tem
o
mesmo
nome
da
classe
onde
ela
foi
definida
(
a
diferença
é
sutil
,
mas
crucial
--
-
veja
abaixo
)
.
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
.
Você
pode
usar
o
operador
@
para
esconder
erros
gerados
no
construtor
do
objeto
,
por
exemplo
:
@new
.
Cuidado
|
No
PHP
3
,
classes
derivadas
e
construtores
tem
uma
série
de
limitações
.
Os
exemplo
seguintes
precisam
ser
lidos
cuidadosamente
para
que
você
entenda
essas
limitações
.
|
No
PHP
3
,
nenhum
construtor
é
chamado
no
exemplo
acima
.
A
regra
no
PHP
3
é
:
'
Um
construtor
é
uma
função
com
o
mesmo
nome
da
classe
'
.
O
nome
da
classe
é
B
,
e
não
há
nenhuma
função
chamada
B(
)
na
classe
B
.
Nada
ocorre
.
Isto
foi
corrigido
no
PHP
4
pela
instrução
de
outra
regra
:
Se
uma
classe
não
tem
construtor
,
o
construtor
da
classe
base
é
chamado
,
se
existir
.
O
exemplo
acima
teriam
impresso
'
Eu
sou
o
construtor
de
A
br
'
.
no
PHP
4
.
No
PHP
3
,
a
função
B(
)
na
classe
A
se
tornará
silenciosamente
um
construtor
na
classe
B
,
mesmo
que
isso
nunca
tenha
sido
planejado
.
A
regra
no
PHP
3
é
:
'
Um
construtor
é
uma
função
com
o
mesmo
nome
da
classe
'
.
PHP
3
não
se
preocupa
se
a
função
foi
definida
na
classe
B
,
ou
se
ela
foi
herdada
.
Isto
foi
corrigido
no
PHP
4
pela
modificação
da
regra
para
:
'
Um
construtor
é
uma
função
com
o
mesmo
nome
da
classe
onde
ela
é
definida
.
'
.
Assim
,
no
PHP
4
,
como
a
classe
B
não
tem
nenhuma
função
construtora
definida
nela
mesma
então
o
construtor
da
classe
base
será
chamado
,
imprimindo
'
Eu
sou
o
construtor
de
A
.
br
'
.
Cuidado
|
Nem
o
PHP
3
ou
o
4
chamam
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
.
|
Nota
:
Não
existem
destrutores
no
PHP
3
ou
4
.
Mas
você
pode
usar
register_shutdown_function(
)
para
simular
a
maioria
dos
efeitos
de
destrutores
.
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
.