L'opérateur de résolution de portée (aussi appelé Paamayim Nekudotayim) ou,
en termes plus simples, le symbole "double deux points" (::),
fournit un moyen d'accéder aux membres
statiques ou constants ainsi qu'aux
éléments redéfinis par la classe.
Lorsque vous référencez ces éléments en dehors de la définition de la
classe, utilisez le nom de la classe.
Paamayim Nekudotayim peut sembler un choix étrange pour un double deux
points. Cependant, au moment de l'écriture du Zend Engine 0.5 (fournit
avec PHP 3), c'est le nom choisi par le groupe Zend.
En fait, cela signifie un double deux points... en Hébreu !
Exemple 19-12. :: en dehors de la définition de la classe
<?php class MyClass { const CONST_VALUE = 'Une valeur constante'; }
echo MyClass::CONST_VALUE; ?>
|
|
Deux mots-clé spéciaux, self et parent,
sont utilisés pour accéder aux membres ou aux méthodes depuis la définition
de la classe.
Exemple 19-13. :: depuis la définition de la classe
<?php class OtherClass extends MyClass { public static $my_static = 'variable statique';
public static function doubleColon() { echo parent::CONST_VALUE . "\n"; echo self::$my_static . "\n"; } }
OtherClass::doubleColon(); ?>
|
|
Lorsqu'une classe étendue redéfinit une méthode de la classe parente, PHP
n'appelera pas la méthode d'origine. Il appartient à la méthode dérivée
d'appeler la méthode d'origine en cas de besoin. Cela est également valable
pour les définitions des constructeurs et destructeurs,
les surcharges et les
méthodes magiques.
Exemple 19-14. Appel d'une méthode parent
<?php class MyClass { protected function myFunc() { echo "MyClass::myFunc()\n"; } }
class OtherClass extends MyClass { // Dépassement de la définition parent public function myFunc() {
// Mais appel de la fonction parent parent::myFunc(); echo "OtherClass::myFunc()\n"; } }
$class = new OtherClass(); $class->myFunc(); ?>
|
|