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
echo $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.