Précédent Suivant

Programmation orienté objet

Les classes et les objets (PHP 4)
L’opérateur de contexte de classe (::)

L'opérateur :: permet 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.

Exemple :

<?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 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 ::. 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.

 

Précédent Suivant