Chapitre 26 : POO avancée

Maîtrisez les concepts avancés de la Programmation Orientée Objet avec PHP

1. Héritage

L'héritage permet à une classe fille d'hériter des propriétés et méthodes d'une classe parent :

<?php
class Animal {
  public function parler() {
    return "Je suis un animal";
  }
}

class Chien extends Animal {
  public function parler() {
    return "Wouf !";
  }
}
?>

2. Visibilité : public, protected, private

Les niveaux de visibilité contrôlent l'accès aux propriétés et méthodes :

  • public : accessible partout
  • protected : accessible dans la classe et les classes héritées
  • private : accessible uniquement dans la classe
<?php
class Exemple {
  public $a;
  protected $b;
  private $c;
}
?>

3. Méthodes magiques

Les méthodes spéciales comme __construct(), __destruct(), __get(), __set(), etc., permettent de contrôler le comportement d'un objet :

<?php
class Utilisateur {
  private $nom;

  public function __construct($nom) {
    $this->nom = $nom;
  }

  public function __get($prop) {
    return $this->$prop;
  }
}
?>

4. Classes abstraites

Une classe abstraite ne peut pas être instanciée directement. Elle sert de modèle :

<?php
abstract class Vehicule {
  abstract public function rouler();
}

class Voiture extends Vehicule {
  public function rouler() {
    echo "La voiture roule";
  }
}
?>

5. Interfaces

Une interface définit un contrat que les classes doivent respecter :

<?php
interface Affichable {
  public function afficher();
}

class Article implements Affichable {
  public function afficher() {
    echo "Affichage de l'article";
  }
}
?>

6. Traits

Les traits permettent de réutiliser du code horizontalement entre plusieurs classes :

<?php
trait Logger {
  public function log($msg) {
    echo "[LOG] $msg";
  }
}

class Service {
  use Logger;
}
?>

7. Exercice pratique : Créez une mini hiérarchie d'objets

🎯 Objectif : Mettre en pratique les concepts avancés de POO : héritage, visibilité, classe abstraite, interface, trait.

Consignes :

  • Créez une classe abstraite Employe avec une méthode abstraite travailler().
  • Implémentez deux classes concrètes : Developpeur et Manager qui héritent de Employe.
  • Créez une interface Identifiable avec une méthode getId().
  • Faites en sorte que vos classes l'implémentent.
  • Ajoutez un trait Horodatage contenant une méthode logAction().
  • Utilisez ce trait dans les deux classes enfants.

✅ Affichez le résultat dans une page test_poo.php.

8. Résumé

  • ✅ Comprendre l'héritage, la visibilité, et les méthodes magiques
  • ✅ Savoir structurer une hiérarchie de classes avec abstraction et interfaces
  • ✅ Réutiliser du code avec les traits

La POO avancée est une étape essentielle pour construire des applications PHP maintenables et modulaires.