5.9 Les classes et les objets (PHP 4)
5 Référence du langage
Manuel PHP
. Les classes : class . extends : héritage ->Constructeur . Opérateur de contexte de classe ( :: ) . parent . Sauvegarde d'objets - cas des sessions . Les fonctions magiques __sleep et __wakeup . Références dans un constructeur . Comparer des objets
|
5.9.3 Constructeur
Le constructeur est la fonction qui est appelée
automatiquement par la classe lorsque vous créez
une nouvelle instance d'une classe a l'aide de l'opérateur
new
. La fonction constructeur a
le même nom que la classe.
Une fonction devient le constructeur si elle porte le
même nom que la classe. Si une classe n'a pas de constructeur,
le constructeur de la classe de base est appelé, si il existe.
| Constructeur de classe |
<?php class Auto_Panier extends Panier { function Auto_Panier () { $this->add_item ("10", 1); } } ?>
|
L'exemple ci-dessus définit la classe
Auto_Panier
qui hérite de la classe Panier et définit le constructeur
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. Pour pouvoir utiliser cette classe sans paramètre,
tous les paramètres du constructeurs devraient être optionnels,
en fournissant une valeur par défaut, comme ci-dessous.
| Constructeur de classe à argument optionnel |
<?php class Constructor_Cart extends Cart { function Constructor_Cart ($item = "10", $num = 1) { $this->add_item ($item, $num); } } // Création du Panier $default_cart = new Constructor_Cart; // Création d'un vrai Panier $different_cart = new Constructor_Cart ("20", 17); ?>
|
Vous pouvez également utiliser l'opérateur
@
pour
empécher
les erreurs survenant dans le constructeur
de s'afficher, e.g.
@new
.
| Constructeur de classe |
<?php class A { function A() { echo "Je suis le constructeur de A.<br />\n"; } function B() { echo "Je suis une fonction standard appelée B dans la classe A.<br />\n"; echo "Je ne suis pas le constructeur de A.<br />\n"; } }
class B extends A { } // Cette syntaxe va appeler B() comme constructeur. $b = new B; ?>
|
La fonction B() de la classe A va soudainement devenir le
constructeur de la classe B, bien qu'il n'ai pas été
prévu pour. PHP 4 ne se soucie guère si la fonction est
définie dans la classe B ou si elle a été héritée.
| Attention | |
PHP 4 n'appelle pas automatiquement le constructeur de
la classe supérieure depuis le constructeur de la classe
dérivée. Il est de votre responsabilité de propager
l'appel des constructeurs.
|
Les destructeurs sont des fonctions qui sont appelées lorsqu'un
objet est détruit, soit avec la fonction
unset
soit par simple sortie d'une fonction (cas des variables locales).
Il n'y a pas de destructeurs en PHP. Vous devez utiliser la
fonction
register_shutdown_function
à la place pour simuler la plus part des effets des destructeurs.
|