- Plan du Site | Contact |
Classes et ObjetsLa programmation orientée objet (POO, pour les intimes) permet d'économiser du code. Elle mérite donc toute notre attention.
Le concept d'objet est indissociable du concept de classe.
Une classe se crée à l'aide du mot réservé class et d'un identifiant valide.
Une classe est une collection de variables et de fonctions travaillant sur ces mêmes variables. Une classe se définit à l'aide de la syntaxe suivante :
<?php class Panier { var $objets; // Objets de notre panier de commande // Ajoute $num articles de $art_ref au panier function ajoute_objet ($art_ref, $num) { $this->objets[$art_ref] += $num; } // Retire $num articles de $art_ref du Panier function enleve_objet ($art_ref, $num) { if ($this->objet[$art_ref] > $num) { $this->objet[$art_ref] -= $num; return true; } else { return false; } } } ?>
On définit ici une classe nommée Panier qui consiste en un tableau associatif d'articles du panier avec deux fonctions qui servent à ajouter et supprimer des objets de ce panier. Utilisation des ObjetsUne Classe représente un type particulier de variable. On crée ensuite une variable du type voulu avec l'opérateur new.
$panier = new Panier; $panier->ajoute_objet("10", 1);
Ceci crée un objet $panier de la classe Panier. La fonction ajoute_objet() de cet objet est appelée pour ajouter un objet de l'article 10 au panier.
Extension de ClasseLes classes peuvent être l'extension d'autres classes. La classe d'extension ou dérivée possède toutes les variables et fonctions de la classe de départ plus ce que l'on y ajoute dans l'éxtension. Ceci est fait avec l'utilisation du mot clé extends. L'Héritage multiple n'est pas supporté (PHP4).
A l'intérieur des fonctions d'une classe, la variable $this veut dire "cet objet". On utilise alors $this->quelquechose pour accéder à une variable ou fonction nommée quelquechose dans l'objet courant.
class Panier_Nomme extends Panier { var $proprietaire; function set_proprietaire ($nom) { $this->proprietaire = $nom; } }
On définit maintenant une classe Panier_Nomme qui contient toutes les variables et fonctions de Panier plus une variable supplémentaire $proprietaire et une autre fonction set_propriétaire(). On peut donc créer un panier nommé de la manière habituelle en pouvant y associer un nom de propriétaire. Et on peut toujours utiliser les fonctions de Panier sur Panier_Nomme :
$ncart = new Panier_Nomme; // Crée un panier nommé $ncart->set_proprietaire ("kris"); // Nomme ce panier print $ncart->proprietaire; // affiche le nom de son propriétaire $ncart->ajoute_objet ("10", 1); // (fonction héritée de la classe Panier)
ConstructeursLes constructeurs sont des fonctions qui sont automatiquement appelées lorsque l'on crée une nouvelle instance de classe. Une fonction devient un constructeur lorsqu'elle porte le même nom que la classe dans laquelle elle est définie.
class Panier_Auto extends Panier { function Panier_Auto () { $this->ajoute_objet ("10", 1); } }
Ceci définit une classe Panier_Auto qui est un Panier plus un constructeur qui initialise le panier avec un objet de l'article n°10 à chaque fois qu'un Panier_Auto est crée avec "new". Un constructeur peut aussi avoir des arguments qui peuvent être optionnels, ce qui les rend beaucoup plus utiles :
class Panier_Constructeur extends Panier { function Panier_Constructeur ($objet = "10", $num = 1) { $this->ajoute_objet ($objet, $num); } } // Shop the same old boring stuff. $panier_defaut = new Panier_Constructeur; // Shop for real... $panier_different = new Panier_Constructeur ("20", 17);
Avertissement : pour des classes dérivées, le constructeur de la classe parente n'est pas appelé automatiquement lors de l'appel au constructeur de la classe dérivée.
NoteSi cet article vous a été de quelque secours, n'hésitez pas à laisser un message sur notre Blog / FAQ, il est là pour cela ! Merci. |
|
||||
Services | Solutions | Formations | Portfolio | Accès Client |