|
Opérateur de contexte de classe ("::")
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 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()”. À 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.” Travail collaboratifContribuez, en ajjoutant des elements a cette page de manuel : Merci de votre aide |