Easy-Micro

LANGAGE Intro POO PHP
Héritage PHP

Introduction à la programmation orientée objet en PHP

Classes étendues et héritage

Un des grands intérêts de la POO est qu'on va pouvoir rendre notre code très modulable, ce qui va être très utile pour gérer un gros projet ou si on souhaite le distribuer à d'autres développeurs.

Il va être possible plutôt que de créer des classes complètement nouvelles, d'étendre (les possibilités) de classes existantes, c'est-à-dire de créer de nouvelles classes qui vont hériter des méthodes et propriétés de la classe qu'elles étendent (sous réserve d'y avoir accès) tout en définissant de nouvelles propriétés et méthodes qui leur sont propres.

Le fichier classes/admin.class.php
<?php
class Admin extends Utilisateur {


}
Notre classe Admin étend la classe Utilisateur. Elle hérite et va pouvoir accéder à toutes les méthodes et aux propriétés de notre classe Utilisateur qui n'ont pas été définies avec le mot clef private.

Notez par ailleurs ici que si une classe fille ne définit pas de constructeur ni de destructeur, ce sont les constructeur et destructeur du parent qui vont être utilisés.

⚠ Attention de ne pas redéfinir une méthode (non privée) ou une propriété (non privée) dans une classe fille, car on dit qu'on surcharge celle de la classe mère.

Si on souhaite que des classes étendues puissent manipuler les propriétés d'une classe mère, alors il faudra définir le niveau de visibilité de ces propriétés comme protected dans la classe mère.

Fichier principal

Fichier index.php
<!DOCTYPE html>
<html lang="fr">
<head>
<title>POO PHP</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="css/mesStyles.css">
</head>
<body>
<h1>Inscription</h1>
<?php
     require 'classes/utilisateur.class.php';
     require 'classes/admin.class.php';

     // nouvelles instances de notre classe Utilisateur
     $Admin1 = new Admin('Mimi', 123456);
     $Utilisateur1 = new Utilisateur('Fifi', 'abcdef');
 
     echo $Admin1 -> getNom().'<br>';
     echo $Utilisateur1 -> getNom().'<br>';
?>
</body>
</html>
Ici, on crée deux objets $Admin1 et $Utilisateur1. Notre objet $Admin1 est créé en instanciant la classe étendue Admin.

-> Voir cet exemple Easy-Micro

Méthodes de la class Admin

Permettre aux objets de la classe Admin de bannir un utilisateur ou d’obtenir la liste des utilisateurs bannis.

Le fichier classes/admin.class.php
<?php
class Admin extends Utilisateur {
        protected $ban;
        
        public function setBan($b){
            $this -> ban[] .= $b;
        }
        public function getBan(){
            echo 'Utilisateurs bannis par '.$this->user_name. ' : ';
            foreach($this -> ban as $valeur){
                echo $valeur .', ';
            }
        }
}
Deux nouvelles méthodes dans la classe Admin

On peut ensuite utiliser ces deux méthodes (setBan et getBan) dans notre fichier principal

Le fichier index.php
<?php
// ...
     // bannir des utilisateurs
     $Admin1 -> setBan('Paul');
     $Admin1 -> setBan('Jean');

     // affichage des utilisateurs bannis
     echo $Admin1 -> getBan();
//...
Nouvelles méthodes à ajouter dans le fichier principal.

-> Voir cet exemple Easy-Micro
« Prev - Intro POO PHP - Next »


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