Manuel PHP

Statique

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. On ne peut accéder à un membre déclaré comme statique avec l'objet instancié d'une classe (bien qu'une méthode statique le peut).

La déclaration static doit être faite après la déclaration de visibilité. Pour des raisons de compatibilité avec PHP 4, si aucune déclaration de visibilité n'est spécifiée, alors le membre ou la méthode sera automatiquement spécifié comme public.

Comme les méthodes statiques peuvent être appelées sans objet, 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é 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 propriétés statiques à travers l'objet en utilisant l'opérateur ->.

L'appel non-statique à des méthodes statiques génère une alerte de degré E_STRICT.

Example#1 Exemple avec un membre statique

  1. <?php
  2. class Foo  
  3. { 
  4.    public static $my_static = 'foo'; 
  5.  
  6.    public function staticValue() { 
  7.       return self::$my_static; 
  8.    }  
  9. }  
  10.  
  11. class Bar extends Foo  
  12. { 
  13.  
  14.    public function fooStatic() { 
  15.       return parent::$my_static; 
  16.    }  
  17. }  
  18.  
  19.  
  20. print Foo::$my_static . "\n";  
  21.  
  22. $foo = new Foo();  
  23. print $foo->staticValue() . "\n";  
  24. print $foo->my_static . "\n";   // propriété my_static non définie
  25.  
  26. // $foo::my_static n'est pas possible
  27.  
  28. print Bar::$my_static . "\n";  
  29. $bar = new Bar();  
  30. print $bar->fooStatic() . "\n";  
  31. ?> 

Example#2 Exemple avec une méthode statique

  1. <?php
  2. class Foo  
  3. { 
  4.    public static function aStaticMethod() { 
  5.       // ...
  6.    }  
  7. }  
  8.  
  9. Foo::aStaticMethod();  
  10. ?> 

Remonter Remonter
L'éditeur javascript - CSS - Gentoo - Tutoriaux PHP - Tutoriels PHP - Breizh Blog