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

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.7 Statique

Le fait de déclarer des membres ou des méthodes comme statiques vous permet de les appeler en dehors de l'objet. Un membre ou une méthode déclaré comme statique ne peut être accédé avec une variable qui est une instance de l'objet et ne peut être redéfini dans une extension de la classe.

La déclaration en statique doit être faite après la déclaration de visibilité. Pour des raisons de compatiblité avec PHP 4, si aucune déclaration de visibilité n'est utilisée, alors le membre ou la méthode sera traité comme s'il avait été déclaré comme public static .

Parce que les méthodes statiques sont appelables sans instance d'objet créé, la pseudo variable $this n'est pas disponible dans la méthode déclarée en tant que statique.

En fait, les appels de méthodes static sont résolus au moment de la compilation. Lorsqu'on utilise un nom de classe explicite, la méthode est déjà identifiée complètement et aucune notion d'héritage n'est appliquée. Si l'appel est effectuée par le mot clé self , alors self est traduit en la classe courante, qui est la classe appartenant au code. Ici aussi, aucune notion d'héritage n'est appliquée.

Les propritétés statiques ne peuvent être accédés à travers l'objet en utilisant l'opérateur -> .

Exemple avec un membre statique

<?php
class Foo
{
    
public static $my_static = 'foo';

    
public function staticValue() {
        return
self::$my_static;
    }
}

class
Bar extends Foo
{

    
public function fooStatic() {
        return
parent::$my_static;
    }
}


print
Foo::$my_static . "\n";

$foo = new Foo();
print
$foo->staticValue() . "\n";
print
$foo->my_static . "\n";      // propriété my_static non définie

// $foo::my_static n'est pas possible

print Bar::$my_static . "\n";
$bar = new Bar();
print
$bar->fooStatic() . "\n";
?>
Exemple avec une méthode statique

<?php
class Foo
{
    
public static function aStaticMethod() {
        
// ...
    
}
}

Foo::aStaticMethod();
?>

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