Sommaire
Les classes et les objets
Les classes : class
extends : héritage
Constructor : constructeur
Opérateur ::
parent
Sauvegarde d'objets - cas des sessions
Les fonctions magiques __sleep et __wakeup
Références dans un constructeur
|
4.7.4 Opérateur ::
Attention |
La documentation suivante n'est valable que pour PHP 4.
|
Parfois, il est pratique de faire référence aux fonctions
est variables d'une classe de base, ou bien d'utiliser
des méthodes de classes qui n'ont pas encore d'objets
créés. L'opérateur :: est là pour ces
situations.
|
<?php class A { function example() { echo "Je suis la fonction originale A::example().<br>\n"; } } class B extends A { function example() { echo "Je suis la fonction redéfinie B::example().<br>\n"; A::example(); } } // Il n'y a pas d'objets de classe A. // L'affichage est : // Je suis la fonction originale A::example().<br> A::example(); // Création d'un objet de la classe B. $b = new B; // L'affichage est : // Je suis la fonction redéfinie B::example().<br> // Je suis la fonction originale A::example().<br> $b->example(); ?>
|
Les exemples ci-dessus appellent la fonction example() dans la
classe A, mais il n'y a pas encore d'objet de classe A, alors il
n'est pas possible d'écrire $a->example(). A la place, on appelle
la fonction example() comme une fonction de classe, c'est-à-dire
avec le nom de la classe elle-même, et sans objet.
Il y a des fonctions de classe, mais pas de variables de classe.
En fait, il n'y a aucun objet au moment de l'appel de la fonction.
Donc, une fonction de classe ne peut accéder à aucune variable
(mais elle peut accéder aux variables locales et globales).
Il faut proscire l'utilisation de $this.
Dans l'exemple ci-dessus, la classe B redéfinit la fonction example().
La définition originale dans la classe A est remplacée par celle de
B, et n'est plus accessible depuis B, à moins que vous n'appeliez
spécifiquement la fonction example() de la classe A avec l'opérateur
::. Ecrivez A::example() pour cela (en fait, il faudrait écrire
parent::example(), comme expliqué dans la section suivante).
Dans ce contexte, il y a un objet courant, qui peut avoir d'autres
variables objets. De ce fait, lorsqu'il est utilisé depuis une méthode
d'un objet, vous pouvez utiliser $this.
|