Au sein d'une classe, les champs ou les méthodes déclarées statiques peuvent être appelés, même si la classe sous-jacente n'a pas été instanciée.
Ainsi, il suffit d'utiliser le nom de la classe contenant les membres statiques, avec l'opérateur de résolution de portée :: pour pouvoir les appeler dans un programme.
class Calcul {
public static $valeur = 10;
public static function multiplier($multiplicateur){
echo $multiplicateur . ' * ' . self::$valeur;
if(is_numeric($multiplicateur)
&& is_numeric(self::$valeur))
return self::$valeur * $multiplicateur;
else
return 0;
}
}
//Appel des membres statiques
Calcul::$valeur = 12;
$res = Calcul::multiplier(10);
echo ' = ' . $res;
Au sein des classes, les membres statiques doivent être appelés par l'opérateur de résolution, précédé du mot clé self ou parent signifiant respectivement , la classe courante ou la classe parente dans le cadre d'un héritage (extends).
class Noeud {
public static $id = 'root';
}
class Element extends Noeud {
public static function getID(){
return parent::$id;
}
}
La pseudo variable $this associée à l'opérateur ->, ne sont pas utilisable pour accéder aux membres statiques, $this-> n'étant indiqué que pour l'appel de membres d'instances, c'est-à-dire des objets.
$this->UnChampStatique; //ERREUR ! self::$UnChampStatique; //CORRECT !
Le modificateur static doit être placé avant la déclaration de visibilité, en l'occurrence public, protected ou private. Par défaut de modificateur de visibilité, les membres statiques sont déclarés implicitement publics.
static UnChamp = 'x'; //Equivaut à public static UnChamp = 'x';