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 
    
 |   
 |