Op�rateur de contexte de classe (::)

Attention

La documentation suivante n'est valable que pour PHP 4 et plus r�cent.

Parfois, il est pratique de faire r�f�rence aux fonctions et 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 {
    function 
example() {
        echo 
"Je suis la fonction originale A::example().<br />\n";
    }
}

class 
extends {
    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(). � 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 proscrire 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 ::. �crivez 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.