Chapitre suivantIndex des CoursChapitre précedentChapitre 10

Classes et objets

 

Classe

Une classe est une collection de variables et de fonctions qui concernent ces variables. Une classe est définie en utilisant la syntaxe suivante :

<?php
class Cart {
var $items; // Eléments de notre panier
// Ajout de $num articles de type $artnr au panier
function add_item ($artnr, $num) {
                                 $this->items[$artnr] += $num;
                                 }
// Enlèvement de $num articles du type $artnr du panier
function remove_item ($artnr, $num) {
             if ($this->items[$artnr] > $num) {
                        $this->items[$artnr] -= $num;
                        return true;
             } else {
                    return false;
                    }
     }
}
?> 

L'exemple ci-dessus définit la classe Cart qui est composée d'un tableau associatif des articles du panier et de deux fonctions pour ajouter ou enlever des éléments au panier.

Les classes sont un type de variable. Pour créer une variable du type désiré, vous devez utiliser l'opérateur new.

$cart = new Cart;
$cart->add_item("10", 1); 

L'instruction ci-dessus crée l'objet $cart de la class Cart. La fonction add_idem() est appelée afin de rajouter un article numéro 10 dans la panier.

Une classe peut être une extension d'une autre classe. Les classes "extended" ou "derived" héritent de toutes les variables et de toutes les fonctions de la classe père plus toutes les définitions que vous rajoutez à cette classe. Cela se fait avec le mot clef "extends".

class Named_Cart extends Cart {
var $owner;
function set_owner ($name) {
                        $this->owner = $name;
                           }
} 

L'exemple ci-dessus définit la classe Named_Cart qui possède les même variables que la classe Cart 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.

$ncart = new Named_Cart; // 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) 

Dans les fonctions d'une classe, la variable $this est égale à l'objet de la classe. Vous pouvez utilisez la forme "$this->quelque chose" pour accéder aux fonctions ou aux variables de l'objet courant.

Le "constructeur" est la fonction qui est appelée automatiquement par la classe lorsque vous créez une nouvelle instance d'un objet. La fonction "constructeur" a le même nom que la classe.

class Auto_Cart extends Cart {
            function Auto_Cart () {
                                  $this->add_item ("10", 1);
                                  }
                             } 

L'exemple ci-dessus définit la classe Auto_Cart qui hérite de la classe Cart et définit le "construteur" de la classe. Ce dernier initialise le panier avec 1 article de type numéro 10 dès que l'instruction "new" est appelée. La fonction "constructeur" peut aussi prendre des paramètres optionnels ou non, ce qui la rends beaucoup plus puissante.

class Constructor_Cart {
     function Constructor_Cart ($item = "10", $num = 1) {
                                                        $this->add_item ($item, $num);
                                                        }
                        }
// Shop the same old boring stuff.
$default_cart = new Constructor_Cart;
// Shop for real...
$different_cart = new Constructor_Cart ("20", 17); 

Attention

Pour les classes qui utilisent l'héritage, le constructeur de la classe père n'est pas automatiquement appelé lorsque le constructeur de la classe dérivée est appelé.


 

Chapitre précedentIndex des CoursChapitre suivant

Révisé le :23-Jan-2008| ©2008 www.technologuepro.com