Easy-Micro

LANGAGE Intro POO PHP
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;
         }
     }
}
Dans notre méthode, on remplace $this->ban par self::$ban puisque notre propriété $ban est désormais statique et appartient à la classe et non pas à un objet en particulier. Il faut donc utiliser l’opérateur de résolution de portée pour y accéder.

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

« Prev - Intro POO PHP - Next »


< Page précédente INTRO POO PHP Page suivante >