Introduction
Avertissement
|
Ce
module
est
EXPERIMENTAL
.
Cela
signifie
que
le
comportement
de
ces
fonctions
,
leurs
noms
et
concrètement
,
TOUT
ce
qui
est
documenté
ici
peut
changer
dans
un
futur
proche
,
SANS
PREAVIS
!
Soyez-en
conscient
,
et
utiliser
ce
module
à
vos
risques
et
périls
.
|
Le
but
de
cette
extension
est
de
permettre
de
maîtriser
les
appels
aux
méthodes
et
aux
membres
d
'
un
objet
.
Seule
une
fonction
est
définie
dans
cette
extension
,
overload(
)
qui
demande
le
nom
de
la
classe
qui
supporte
cet
fonctionnalité
.
Cette
classe
doit
être
pourvue
des
méthodes
nécessaire
au
bon
fonctionnement
de
l'
extension
,
c'est
à
dire
:
__get(
)
,
__set(
)
et
__call(
)
,
qui
servent
respectivement
à
lire
et
modifier
un
membre
,
et
appeler
une
méthode
.
De
cette
manière
,
l
'
overloading
assure
un
contrôle
sur
les
fonctions
appelées
.
A
l'
intérieur
de
ces
méthodes
,
l'overloading
est
désactivé
,
pour
que
vous
puissiez
accéder
à
l
'objet
.
Voici
un
exemple
simple
de
fonctions
utilisant
overload(
)
:
Exemple
1
.
Overload
avec
une
classe
PHP
?php
class
OO
{
var
$a
=
111
;
var
$elem
=
array('b
'
=
9
,
'c
'
=
42)
;
/
/
Fonction
de
callback
pour
la
lecture
de
membre
function
__get($prop_name
,
$prop_value
)
{
if
(isset($this
-
elem[$prop_name])
)
{
$prop_value
=
$this
-
elem[$prop_name]
;
return
true
;
}
else
{
return
false
;
}
}
/
/
Fonction
de
callback
pour
l
'
eacute;criture
de
membre
function
__set($prop_name
,
$prop_value
)
{
$this
-
elem[$prop_name
]
=
$prop_value
;
return
true
;
}
}
/
/
Ici
,
l'initiation
de
l'overload
overload('OO')
;
$o
=
new
OO
;
print
"\$o
-
a
:
$o
-
a\n"
;
/
/
print
:
$o
-
a
:
print
"\$o
-
b
:
$o
-
b\n"
;
/
/
print
:
$o
-
b
:
42
print
"
\$o
-
d
:
$o
-
d\n"
;
/
/
print
:
$o
-
d
:
/
/
ajouter
une
nouvelle
valeur
au
membre
$elem
,
en
programmation
OOP
$o
-
x
=
56
;
/
/
instantiation
de
la
classe
stdclass
(elle
existe
par
d
eacute;faut
en
PHP
4
)
/
/
$val
n'est
pas
overload
eacute;e
!
$val
=
new
stdclass
;
$val
-
prop
=
555
;
/
/
Forcez
"a
"
agrave
;
ecirc;tre
un
tableau
avec
l
'
eacute;l
eacute;ment
$val
/
/
Mais
_set(
)
forcera
cet
eacute;l
eacute;ment
dans
le
tableau
$elem
$o
-
a
=
array($val)
;
var_dump($o
-
a[0]
-
prop)
;
?
|
|
Avertissement
|
Comme
c
'
est
une
extension
expérimentale
,
tout
ne
fonctionne
pas
encore
.
Il
n'
y
a
pas
de
support
pour
__call(
)
Il
n'y
a
pas
de
support
pour
__call(
)
actuellement
,
et
nouvs
ne
pouvez
overloader
que
des
accesseurs
.
Vous
ne
pouvez
pas
appeler
les
fonctions
d'
overload
de
la
classe
,
et
__set(
)
ne
fonctionne
que
pour
un
seul
niveau
d
'accesseur
.
|