7.9 Classes et Objets
7 Index des fonctions
Manuel PHP
. Introduction . Pré-requis . Installation . Configuration à l'exécution . Types de ressources . Constantes prédefinies ->Exemples . call_user_method_array . call_user_method . class_exists . get_class_methods . get_class_vars . get_class . get_declared_classes . get_object_vars . get_parent_class . is_a . is_subclass_of . method_exists
|
7.9.7 Exemples
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é.
Fonctions d'objets : classes.inc |
<?php
// classe de base, avec ses membres et ses méthodes class Legume {
var $edible; var $color;
function Legume( $edible, $color="green" ) { $this->edible = $edible; $this->color = $color; }
function is_edible() { return $this->edible; }
function what_color() { return $this->color; } } // fin de la classe Legume
// Extension la classe de base class Epinard extends Legume { var $cuit = FALSE; function Epinard() { $this->Legume( TRUE, "green" ); } function cuisine() { $this->cuit = TRUE; }
function is_cooked() { return $this->cooked; } } // fin de la classe Epinard
?>
|
Lorsqu'on instantie deux objets de ces classes et que l'on affiche
leurs informations, on affiche aussi leur héritage. On définit ici
des utilitaires qui servent essentiellement à afficher ces
informations proprement.
Fonctions d'objets : test_script.php |
<pre> <?php
include "classes.inc";
// Fonctions 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 "\tfonction $method()\n"; }
function class_parentage($obj, $class) { global $$obj; if (is_subclass_of($$obj, $class)) { echo "L'objet $obj appartient à la classe ".get_class($$obj); echo " est une sous-classe de $class\n"; } else { echo "L'objet $obj n'est pas une sous-classe de $class\n"; } }
// instantie 2 objets
$veggie = new Legume(true,"blue"); $leafy = new Epinard();
// affiche les informations sur ces objets echo "légume : CLASS ".get_class($veggie)."\n"; echo "feuillues : CLASS ".get_class($leafy); echo ", PARENT ".get_parent_class($leafy)."\n";
// affiche les propriétés du légume echo "\nlégumes : Propriétés\n"; print_vars($veggie);
// et les méthodes des feuillus echo "\nfeuillus : Méthodes\n"; print_methods($leafy);
echo "\nParentée:\n"; class_parentage("leafy", "Epinard"); class_parentage("leafy", "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 epinard
L'objet feuilles est une sous-classe de Legume
|
|