Introdução
O
propósito
desta
extensão
é
permitir
a
sobrecarga
de
propriedades
de
acesso
e
metodos
de
objetos
.
Somente
uma
função
é
definida
nesta
extensão
,
overload(
)
que
recebe
o
nome
da
classe
que
deve
ter
esta
funcionalidade
habilitada
.
A
classe
especificada
tem
que
definir
os
metodos
para
ter
esta
funcionalidade
:
__get(
)
,
__set(
)
e
__call(
)
respectivamente
para
leitura
/
escrita
das
propriedades
,
ou
chamar
um
metodo
.
Desta
forma
a
sobrecarga
pode
ser
seletiva
:
Dentro
destas
funções
a
sobrecarga
é
desabilitada
de
forma
que
você
possa
acessar
propriedades
do
objeto
normalmente
.
Atenção
|
Este
módulo
é
EXPERIMENTAL
.
Isso
quer
dizer
que
o
comportamento
neste
módulo
--
-
incluindo
suas
funções
e
seus
nomes
,
e
TUDO
mais
que
está
documentado
sobre
esse
módulo
--
-
poderá
mudar
em
futuras
versões
do
PHP
,
SEM
QUALQUER
NOTIFICAÇÃO
.
Esteja
avisado
,
e
use
este
módulo
por
sua
própria
conta
e
risco
.
|
Requisitos
Nenhuma
biblioteca
externa
é
necessária
para
compilar
esta
extensão
.
Instalação
Para
poder
utilizar
essas
funções
,
você
precisa
compilar
o
PHP
com
a
opção
--enable-overload
.
Configuração
durante
execução
Esta
extenção
não
define
nenhum
parâmetro
de
configuração
no
php.ini
.
Tipos
Resource
Esta
extensão
não
possui
nenhum
tipo
resource
.
Constantes
Predefinidas
Esta
extensão
não
possui
nenhuma
constante
.
Exemplos
Alguns
exemplos
simples
da
utilização
da
função
overload(
)
:
Exemplo
1
.
Sobrecarga
de
uma
classe
no
PHP
?php
class
OO
{
var
$a
=
111
;
var
$elem
=
array('b
'
=
9
,
'c
'
=
42)
;
/
/
Metodo
callback
para
pegar
uma
propriedade
function
__get($prop_name
,
$prop_value
)
{
if
(isset($this
-
elem[$prop_name])
)
{
$prop_value
=
$this
-
elem[$prop_name]
;
return
true
;
}
else
{
return
false
;
}
}
/
/
Metodo
callback
para
definir
uma
propriedade
function
__set($prop_name
,
$prop_value
)
{
$this
-
elem[$prop_name
]
=
$prop_value
;
return
true
;
}
}
/
/
Aqui
nós
sobrecarregamos
o
objeto
OO
overload('OO')
;
$o
=
new
OO
;
print
"\$o
-
a
:
$o
-
a\n"
;
/
/
imprime
:
$o
-
a
:
print
"\$o
-
b
:
$o
-
b\n"
;
/
/
imprime
:
$o
-
b
:
9
print
"
\$o
-
c
:
$o
-
c\n"
;
/
/
imprime
:
$o
-
c
:
42
print
"
\$o
-
d
:
$o
-
d\n"
;
/
/
imprime
:
$o
-
d
:
/
/
adicionar
um
novo
intem
para
o
array
$elem
em
OO
$o
-
x
=
56
;
/
/
iniciar
stdclass
(é
integrada
no
PHP
4
)
/
/
$var
não
é
sobrecarregada
!
$val
=
new
stdclass
;
$val
-
prop
=
555
;
/
/
Que
"a
"
seja
um
array
com
o
objeto
$val
dentro
dele
/
/
mas
__set(
)
o
colocará
no
array
$elem
$o
-
a
=
array($val)
;
var_dump($o
-
a[0]
-
prop)
;
?
|
|
Atenção
|
Como
esta
é
uma
extensão
experimental
,
nem
todas
as
coisas
funcionam
.
Não
existe
ainda
suporte
para
__call(
)
Não
existe
ainda
suporte
para
__call(
)
e
você
somente
pode
fazer
a
sobrecaraga
das
operações
get
e
set
para
propriedades
.
Você
não
pode
invocar
as
chamadas
originais
da
classe
e
__set(
)
somente
funciona
até
um
nível
de
acesso
de
propriedades
.
|