6.4 Classes et Objets
6 Référence des fonctions
Manuel PHP
. Introduction . Pré-requis . Installation . Configuration à l'exécution . Types de ressources . Constantes pré-définies ->Exemples . call_user_method_array . call_user_method . class_exists . get_class_methods . get_class_vars . get_class . get_declared_classes . get_declared_interfaces . get_object_vars . get_parent_class . interface_exists . is_a . is_subclass_of . method_exists . property_exists
|
6.4.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 instancie 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) { foreach (get_object_vars($obj) as $prop => $val) { 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) { if (is_subclass_of($GLOBALS[$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>
|
|