📘 Chapitre – Constructeurs, héritage et visibilité

1. 🎯 Objectif pédagogique

Savoir utiliser les constructeurs pour initialiser des objets, appliquer les principes d’héritage entre classes et maîtriser la visibilité (public, protected, private) des propriétés et méthodes.

2. 📚 Concepts abordés

  • Le mot-clé __construct()
  • Initialisation des propriétés lors de l’instanciation
  • Notion d’héritage : extends
  • Redéfinition (surcharge) de méthodes
  • Visibilité :

    • public : accessible partout.
    • protected : accessible dans la classe et ses enfants.
    • private : accessible uniquement dans la classe.

3. 🧠 Explication théorique

Le constructeur est une méthode spéciale qui s’exécute automatiquement lors de la création d’un objet. Exemple :

class Article {
    public $titre;
    public $contenu;

    public function __construct($titre, $contenu) {
        $this->titre = $titre;
        $this->contenu = $contenu;
    }

    public function afficher() {
        return "Titre : " . $this->titre . " - Contenu : " . $this->contenu;
    }
}

$article = new Article("Introduction à PHP", "PHP est un langage serveur.");
echo $article->afficher();

Héritage

Une classe enfant peut hériter des propriétés et méthodes d’une classe parent.

class BlogArticle extends Article {
    public $auteur;

    public function afficher() {
        return parent::afficher() . " - Auteur : " . $this->auteur;
    }
}

4. 🛠 Tutoriel pratique

Résumé du travail : Créer une classe Article, puis une classe BlogArticle héritant d’Article.

Arborescence projet :

projet_poo/
 ├── Article.php
 └── test.php

Étape 1 : Classe Article avec constructeur

<?php
class Article {
    protected $titre;
    protected $contenu;

    public function __construct($titre, $contenu) {
        $this->titre = $titre;
        $this->contenu = $contenu;
    }

    public function afficher() {
        return "Titre : " . $this->titre . " - Contenu : " . $this->contenu;
    }
}

Étape 2 : Classe enfant BlogArticle

<?php
require 'Article.php';

class BlogArticle extends Article {
    private $auteur;

    public function __construct($titre, $contenu, $auteur) {
        parent::__construct($titre, $contenu);
        $this->auteur = $auteur;
    }

    public function afficher() {
        return parent::afficher() . " - Auteur : " . $this->auteur;
    }
}

Étape 3 : Tester dans test.php

<?php
require 'BlogArticle.php';

$article = new BlogArticle("POO en PHP", "Découvrir l'héritage.", "Alice");
echo $article->afficher();

5. 🧾 Résumé et points-clés

  • __construct() permet d’initialiser les objets dès leur création.
  • Héritage (extends) : réutilisation et extension des classes existantes.
  • Visibilité : contrôler l’accès aux propriétés et méthodes.
  • parent:: appelle une méthode de la classe parente.