IX. Classes et Objets

Introduction

About

Ces fonctions permettent de gérer les classes et les objets . Vous pouvez notamment connaître le nom de la classe d' un objet , ses membres et ses méthodes , et tous les objets parents (les classes qui sont étendues par la classe d'un objet ) .

Exemple d'utilisation

Dans cet exemple , on définit une classe de base , et une extension . La classe de base définit un légume , s ' il est mangeable ou pas , et sa couleur . La sous-classe epinard ajoute une méthode pour le cuisiner , et une autre pour savoir s ' il est cuisiné .

Exemple 1 . classes.inc

 
 ?php

 
/

 
/

 
classe

 
de

 
base

 
,

 
avec

 
ses

 
membres

 
et

 
ses

 
méthodes

 
class

 
Legume

 
{

 
var

 
$mangeable

 
;

 
var

 
$couleur

 
;

 
function

 
legume

 
(

 
$mangeable

 
,

 
$couleur="green

 
"

 
)

 
{

 
$this

 
-

 
mangeable

 
=

 
$mangeable

 
;

 
$this

 
-

 
couleur

 
=

 
$couleur

 
;

 
    }

 
function

 
est_mangeable(

 
)

 
{

 
return

 
$this

 
-

 
mangeable

 
;

 
    }

 
function

 
quelle_couleur(

 
)

 
{

 
return

 
$this

 
-

 
couleur

 
;

 
    }

 
}

 
/

 
/

 
fin

 
de

 
la

 
classe

 
Legume

 
/

 
/

 
extend

 
la

 
classe

 
de

 
base

 
class

 
Epinard

 
extends

 
Legume

 
{

 
var

 
$cuit

 
=

 
  
   
FALSE

  

 

 
;

 
function

 
Epinard(

 
)

 
{

 
$this

 
-

 
Legume

 
(

 
  
   
TRUE

  

 

 
,

 
"green

 
"

 
)

 
;

 
    }

 
function

 
cuisine(

 
)

 
{

 
$this

 
-

 
cuit

 
=

 
  
   
TRUE

  

 

 
;

 
    }

 
function

 
est_cuit(

 
)

 
{

 
return

 
$this

 
-

 
cuit

 
;

 
    }

 
}

 
/

 
/

 
fin

 
de

 
la

 
classe

 
Epinard

 
?





Lorsqu' on instantie deux objets de ces classes , et qu 'on affiche leurs informations , on affiche aussi leur héritage . On définit ici des utilitaires qui servent essentiellement à afficher ces informations proprement .

Exemple 2 . test_script.php

 
pre

 
?php

 
include

 
"

 
classes.inc"

 
;

 
/

 
/

 
utilitaires

 
function

 
print_vars($obj

 
)

 
{

 
$arr

 
=

 
get_object_vars($obj)

 
;

 
while

 
(list($prop

 
,

 
$val

 
)

 
=

 
each($arr)

 
)

 
echo

 
"\t$prop

 
=

 
$val\n"

 
;

 
  }

 
function

 
print_methods($obj

 
)

 
{

 
$arr

 
=

 
get_class_methods(get_class($obj))

 
;

 
foreach

 
($arr

 
as

 
$method

 
)

 
echo

 
"\tfunction

 
$method()\n"

 
;

 
  }

 
function

 
class_parentage($obj

 
,

 
$class

 
)

 
{

 
global

 
$$obj

 
;

 
if

 
(is_subclass_of($$obj

 
,

 
$class)

 
)

 
{

 
echo

 
"L'objet

 
$obj

 
belongs

 
to

 
class

 
".get_class($$obj)

 
;

 
echo

 
"

 
est

 
une

 
sous-classe

 
de

 
$class\n"

 
;

 
}

 
else

 
{

 
echo

 
"L'objet

 
$obj

 
n'est

 
pas

 
une

 
sous

 
classe

 
$class\n"

 
;

 
    }

 
  }

 
/

 
/

 
instantie

 
2

 
objets

 
$legume

 
=

 
new

 
Legume(TRUE

 
,"blue")

 
;

 
$feuilles

 
=

 
new

 
Epinard()

 
;

 
/

 
/

 
affiche

 
les

 
informations

 
sur

 
ces

 
objets

 
echo

 
"legume

 
:




 
CLASS

 
"

 
.get_class($legume)

 
."\n"

 
;

 
echo

 
"feuilles

 
:




 
CLASS

 
"

 
.get_class($feuilles)

 
;

 
echo

 
"

 
,

 
PARENT

 
".get_parent_class($feuilles)

 
."\n"

 
;

 
/

 
/

 
affiche

 
les

 
propriétés

 
du

 
légume

 
echo

 
"\nlégume

 
:




 
Propriétés

 
\n"

 
;

 
print_vars($legume)

 
;

 
/

 
/

 
et

 
les

 
méthodes

 
de

 
"feuilles

 
"

 
echo

 
"\nfeuilles

 
:




 
Methods\n"

 
;

 
print_methods($feuilles)

 
;

 
echo

 
"\nParentée:\n"

 
;

 
class_parentage("feuilles"

 
,

 
"Epinard")

 
;

 
class_parentage("feuilles"

 
,

 
"Legume")

 
;

 
?

 
/

 
pre





Il est important de noter que dans les exemples ci-dessus , les objets $feuilles sont une instance de Epinard qui est une sous-classe de Legume , donc la dernière partie du script va afficher :

 
[

 
..

 
.

 
]

 
Parentée

 
:




 
L'

 
objet

 
feuilles

 
n'est

 
pas

 
une

 
sous

 
classe

 
Spinach

 
L

 
'objet

 
feuilles

 
est

 
une

 
sous-classe

 
de

 
Legume





Table des matières
call_user_method_array -- Appelle une méthode utilisateur avec un tableau de paramètres
call_user_method -- Appelle une méthode utilisateur d'un objet
class_exists -- Vérifie qu'une classe a été définie
get_class_methods -- Retourne les noms des méthodes d'une classe.
get_class_vars -- Retourne les valeurs par défaut des attributs d'une classe.
get_class -- Retourne la classe d'un objet
get_declared_classes -- Liste toutes les classes définies
get_object_vars -- Retourne un tableau associatif des propriétés d'un objet
get_parent_class -- Retourne le nom de la classe d'un objet
is_a -- Returns TRUE if the object is of this class or has this class as one of its parents
is_subclass_of -- Détermine si un objet est une sous-classe
method_exists -- Vérifie que la méthode existe pour une classe.