Les attributs et méthodes statiques

PHP cours tutorial

Les attributs et méthodes statiques

Le fait de déclarer des propriétés ou des méthodes comme static vous permet d'y accéder sans avoir besoin d'instancier la classe.Car on ne peut accéder à une propriété déclarée comme statique avec l'objet instancié d'une classe.

Les méthodes statiques

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, c'est-à-dire qu’on ne peut pas utiliser $this

Pour déclarer une méthode statique, vous devez faire précéder le mot-clé function du mot-clé static, après le type de visibilité.

Exemple :

Sélectionner le code

  <?php
  function Demonstration()
  {
      return 'c\'est le résulta de la démonstration';
  }
  class MaStaticClass
  {
      //propriété statique
              public static $MaStaticVar = null;
              // Méthode statique
      public static function MaStaticInit()
              /* cette méthode est un constructeur car elle utilise une fonction
  Demonstration()*/
      {
          self::$MaStaticVar = Demonstration();
      }
  }
  MaStaticClass::MaStaticInit(); // appele du constructeur
  echo MaStaticClass::$MaStaticVar;
  ?>

 

Les attributs statiques

 Même principe, c'est-à-dire qu'un attribut statique appartient à la classe et non à un objet. Ainsi, tous les objets auront accès à cet attribut, et cet attribut aura la même valeur pour tous les objets.

La déclaration d'un attribut statique se fait en faisant précéder son nom du mot-clé static, comme ceci :

Exemple :

Sélectionner le code

  <?php
  class Ma_classe
  {
      public static $Ma_static = 'Je suis une propriété statique';
      public function staticValue() {
          return self::$Ma_static;
      }
  }
  print Ma_classe::$Ma_static . "<br />";
  $ma_classe = new Ma_classe();
  print $ma_classe->staticValue() . "<br />";
  ?>

 

Les attributs statiques servent à pouvoir avoir des attributs indépendants de tout objet. Donc si  vous créerez des tas d'objets, L’attribut statique aura toujours la même valeur (sauf si l'objet modifie sa valeur, bien sûr).

Ou encore : si l'un des objets modifie la valeur de l’attribut statique, tous les autres objets qui accèderont à cet attribut obtiendront la nouvelle valeur ! Car un attribut statique appartient à la classe, et il n'existe qu'en un seul exemplaire.

On n'accède pas à un attribut statique avec $this mais avec self ! self représente la classe tandis que $this représente l'objet actuellement créé.

Par carabde 20 Aout 2014