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.
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;
?>
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 2014Livre numérique court pour comprendre la méthode secrète permettant d'obtenir des likes sans fin sur Facebook.
GAGNER DE L'ARGENT