Propriétés/méthodes statiques
Notions théoriques
En PHP, les propriétés et méthodes statiques appartiennent à la classe elle-même, et non à une instance de cette classe. Cela signifie que vous n'avez pas besoin de créer un objet pour accéder à une propriété ou à une méthode statique.
Vous pouvez y accéder directement à partir de la classe en utilisant l'opérateur de résolution de portée ::
Exemple pratique
Imaginons que nous avons une classe Guerrier
dans notre jeu de combat. Nous voulons compter combien de guerriers sont créés. Pour cela, nous pouvons utiliser une propriété statique.
class Guerrier {
public static $compteur = 0;
public function __construct() {
self::$compteur++;
}
}
$guerrier1 = new Guerrier();
$guerrier2 = new Guerrier();
print(Guerrier::$compteur); // Affiche 2
Dans cet exemple, chaque fois qu'un nouvel objet Guerrier
est créé, le constructeur est appelé et la propriété statique $compteur
est incrémentée. Nous pouvons accéder à cette propriété directement à partir de la classe Guerrier
en utilisant l'opérateur de résolution de portée.
Test de mémorisation/compréhension
TP pour réfléchir et résoudre des problèmes
Dans notre jeu de combat, nous avons maintenant plusieurs types de personnages.
Nous voulons garder une trace du nombre total de personnages créés, mais aussi du nombre de chaque type de personnage.
Pour cela, nous allons utiliser des propriétés statiques.
Votre tâche est de créer des classes, dans le répertoire 'classes',
pour différents types de personnages (par exemple, Guerrier
, Mage
, Archer
).
Chaque classe (Guerrier
, Mage
et Archer
) doit avoir une propriété statique $compteur
qui est incrémentée chaque fois qu'un nouvel objet de ce type est créé.
Ensuite, créez une classe Jeu
, dans le répertoire 'classes', avec une méthode afficherCompteurs()
qui affiche :
-
le nombre total de personnages
-
et le nombre de chaque type de personnage.
-
Voici le code du fichier
Jeu.php
:class Jeu {
public static function afficherCompteurs() {
$total = Guerrier::$compteur + Mage::$compteur + Archer::$compteur;
print("Total des personnages : $total" . "\n");
print("Guerriers : " . Guerrier::$compteur . "\n");
print("Mages : " . Mage::$compteur . "\n");
print("Archers : " . Archer::$compteur . "\n");
}
} -
Voici le code qui sera saisi dans le fichier
main.php
:guerrier1 = new Guerrier();
guerrier2 = new Guerrier();
mage1 = new Mage();
archer1 = new Archer();
archer2 = new Archer();
archer3 = new Archer();
Jeu::afficherCompteurs();
Une solution
Vous devez être connecté pour voir le contenu.