LXXVI. Overload

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 .

Table des matières
overload -- Active la couche de contrôle des membres et méthodes