Visibilité
<<<
L'opérateur de résolution de portée (::) Statique
>>>

5.10 Les classes et les objets (PHP 5)
5 Référence du langage
 Manuel PHP

Introduction
Les notions de base
Auto-chargement de classes
Constructeurs et destructeurs
Visibilité
->L'opérateur de résolution de portée (::)
Statique
Constantes
Abstraction d'objets
Interfaces
Surcharge
Les Itération
Masques
Méthodes magiques
Mot clé "final"
Duplication d'objets
Comparaison d'objets
Réflexion
Typage optionnel des paramètres

5.10.6 L'opérateur de résolution de portée (::)

L'opérateur de résolution de portée (aussi appelé Paamayim Nekudotayim) ou en terme plus simple, le symble double deux points (::) qui fournit un moyen d'accéder aux membres static , constant ou encore aux méthodes redéfinies 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 !

:: 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és spéciaux self et parent sont utilisés pour accéder aux membres ou aux méthodes depuis la définition de la classe.

:: 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 des destructeurs , les surcharges et les méthodes magiques .

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();
?>

<< L'opérateur de résolution de portée (::) >>
Visibilité Les classes et les objets (PHP 5) Statique