extends : h�ritage

Souvent, vous aurez besoin d'une classe avec des m�thodes et fonctions similaires � une autre classe. En fait, il est bon de d�finir des classes g�n�riques, qui pourront �tre r�utilis�es et adapt�es � tous vos projets. Pour faciliter cela, une classe peut �tre une extension d'une autre classe. La classe d�riv�e h�rite alors de toutes les m�thodes et variables de la classe de base (cet h�ritage a de bien que personne ne meurt pour en profiter), mais peut d�finir ses propres fonctions et variables, qui s'ajouteront. Une classe ne peut h�riter que d'une seule autre classe, et l'h�ritage multiple n'est pas support�. Les h�ritages se font avec le mot cl� 'extends'.

<?php
class Panier_nomme extends Panier {
    var 
$owner;
  
    function 
set_owner ($name) {
        
$this->owner $name;
    }
}
?>

L'exemple ci-dessus d�finit la classe Panier_nomme qui poss�de les m�mes variables que la classe Panier et la variable $owner en plus, ainsi que la fonction set_owner(). Vous cr�ez un panier nominatif de la m�me mani�re que pr�c�demment, et vous pouvez alors affecter un nom au panier ou en conna�tre le nom. Vous pouvez de toutes les fa�ons utiliser les m�mes fonctions que sur un panier classique.

<?php
$ncart 
= new Panier_nomme;    // Cr�ation d'un panier nominatif
$ncart->set_owner ("kris");   // Affectation du nom du panier
print $ncart->owner;           // Affichage du nom du panier
$ncart->add_item ("10"1);   // (h�ritage des fonctions de la classe p�re)
?>

Ceci est �galement appel� une relation "parent-enfant". Vous cr�ez une classe parent, et utilisez extends pour cr�er une nouvelle classe bas�e sur la classe parent : la classe enfant. Vous pouvez toujours utiliser cette nouvelle classe enfant et en cr�er une nouvelle bas�e sur cette classe enfant.

Note: Les classes doivent �tre d�finies avant d'�tre utilis�es ! Si vous voulez que la classe Named_Cart �tende la classe Cart, vous devez d'abord d�finir la classe Cart. Si vous voulez cr�er une autre classe appel�e Yellow_named_cart, bas�e sur la classe Named_Cart, vous devez d'abord d�finir la classe Named_Cart. Pour faire court : l'ordre dans lequel les classes sont d�finies est important.