Une classe est une collection de variables et de fonctions qui fonctionnent avec ces variables. Une classe est définie en utilisant la syntaxe suivante :
<?php class Caddie { 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; } // Suppression 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 Caddie qui est composée d'un tableau associatif contenant les articles du panier et de deux fonctions, une pour ajouter et une pour enlever des éléments au panier.
Note : En PHP 4, seuls les initialiseurs constants pour les variables var sont autorisés. Utilisez les constructeurs pour les initialisations variables, ou utilisant des expressions.
<?php /* Aucune de ces syntaxes ne fonctionnera en PHP 4 */ class Caddie { var $date_du_jour = date("d/m/Y"); var $name = $firstname; var $owner = 'Fred ' . 'Jones'; } /* Voici comment cela doit se faire désormais. */ class Caddie { var $date_du_jour; var $name; var $owner; function Caddie() { $this->date_du_jour = date("d/m/Y"); $this->name = $GLOBALS['firstname']; /* etc... */ } } ?<
Les classes forment un type de variable. Pour créer une variable du type désiré, vous devez utiliser l'opérateur new.
L'instruction ci-dessus crée l'objet $cart de la class Caddie. La fonction add_idem() est appelée afin d'ajouter l'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". L'héritage multiple n'est pas supporté.
<?php class Caddie_nomme extends Caddie { var $owner; function set_owner ($name) { $this->owner = $name; } } ?> |
L'exemple ci-desssus définit la classe Caddie_nomme qui possède les même variables que la classe Caddie 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ême fonctions que sur un panier classique.
<?php $ncart = new Caddie_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) ?> |
Dans les fonctions d'une classe, la variable $this est égale à l'objet de la classe. Vous pouvez utilisez la forme "$this->quelquechose" pour accéder aux fonctions ou aux variables de l'objet courant. Aussi bien depuis l'objet lui-même que de l'extérieur, vous n'avez pas besoin de $ pour accéder aux propriétés d'un objet.
<?php $ncart->owner = "chris"; // pas de '$' $ncart->$owner = "chris"; // Ceci est invalide, car $ncart->$owner équivaut à $ncart->"" $myvar = 'owner'; $ncart->$myvar = "chris"; // Ceci est valide, car $ncart->$owner équivaut à $ncart->owner |
Le constructeur est la fonction qui est appelée automatiquement par la classe lorsque vous créez une nouvelle instance d'une classe. La fonction constructeur a le même nom que la classe.
<?php class Auto_Caddie extends Caddie { function Auto_Caddie () { $this->add_item ("10", 1); } } ?> |
L'exemple ci-dessus définit la classe Auto_Caddie qui hérite de la classe Caddie 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 prendre ou non, des paramètres optionnels, ce qui la rend beaucoup plus pratique.
<?php class Constructor_Caddie extends Caddie { function Constructor_Caddie ($item = "10", $num = 1) { $this->add_item ($item, $num); } } // Place dans le caddie toujours la même chose... $default_cart = new Constructor_Caddie; // Place dans le caddie des objets différents, comme dans la // réalité $different_cart = new Constructor_Caddie ("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é. |
Précédent | Sommaire | Suivant |
Variable functions | Niveau supérieur | Références dans un constructeur |