Statiques
Introduction à la programmation orientée objet en PHP
Propriétés et méthodes statiques
Une propriété ou une méthode statique est une propriété ou une méthode qui ne va pas appartenir à une instance de classe ou à un objet en particulier mais qui va plutôt appartenir à la classe dans laquelle elle a été définie. On va donc devoir l'utiliser avec self::$ban plutôt que $this -> $ban
Les méthodes et propriétés statiques vont donc avoir la même définition et la même valeur pour toutes les instances d’une classe et nous allons pouvoir accéder à ces éléments sans avoir besoin d’instancier la classe.
Le fichier classes/admin.class.php<?php
class Admin extends Utilisateur{
protected static $ban;
public const ABONNEMENT = 5;
public function __construct($n, $p, $r) {
$this->user_name = strtoupper($n);
$this->user_pass = $p;
$this->user_region = $r;
}
// Les ... permettent à une fonction
// d'accepter un nombre variable d'arguments
public function setBan(...$b) {
foreach($b as $banned) {
// on remplace $this->ban par self::$ban
self::$ban[] .= $banned;
}
}
public function getBan() {
echo 'Utilisateurs bannis : ';
// on remplace $this->ban par self::$ban
foreach(self::$ban as $valeur) {
echo $valeur .', ';
}
}
public function setPrixAbo(){
if($this->user_region === 'Sud') {
return $this->prix_abo = self::ABONNEMENT;
} else {
return $this->prix_abo = parent::ABONNEMENT / 2;
}
}
}
Chaque objet de la classe Admin va ainsi pouvoir bannir des utilisateurs en utilisant setBan() et chaque nouvel utilisateur banni va être stocké dans la propriété $ban. De même, chaque objet va pouvoir afficher la liste complète des personnes bannies en utilisant getBan().
Le fichier index.php<!DOCTYPE html>
<html lang="fr">
<head>
<title>POO PHP</title>
<meta charset="utf-8">
<link rel="stylesheet" href="css/mesStyles.css">
</head>
<body>
<h1>Inscription</h1>
<?php
require 'classes/utilisateur.class.php';
require 'classes/admin.class.php';
$Admin1 = new Admin('Pierre', 'abcdef', 'Sud');
$Admin2 = new Admin('Mathilde', 123456, 'Nord');
$Utilisateur1 = new Utilisateur('Florence', 'flo', 'Est');
$Admin1 -> setBan('Paul', 'Jean');
$Admin2 -> setBan('Thomas');
$Admin1 -> getBan();
echo '<br>';
$Admin2 -> getBan();
?>
</body>
</html>
-> Voir cet exemple Easy-Micro
-> Voir un autre exemple Easy-Micro