Le fait de déclarer des membres ou des méthodes comme statiques vous
permet d'y accéder sans avoir besoin d'instancier la classe. Un membre
déclaré comme statique ne peut être accédé sans instancier un objet de la
classe (bien qu'une méthode statique le peut). Les méthodes et les membres statiques
ne peuvent être redéfinis dans les sous-classes.
La déclaration static 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.
Comme les méthodes statiques sont appelables sans instance d'objet créée,
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 statiques sont résolus
au moment de la compilation. Lorsque l'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.
On ne peut pas accéder à des propritétés statiques à travers l'objet en utilisant
l'opérateur ->.
Exemple 19-14. 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 19-15. Exemple avec une méthode statique
<?php class Foo { public static function aStaticMethod() { // ... } }
Foo::aStaticMethod(); ?>
|
|