Tp 4 php classes models blogpoo
Thème :
Junior
1 vues ·8/9 leçons

06 - La Migration des Contrôleurs : Bilan

L’adoption de la Programmation Orientée Objet (POO) transforme radicalement l’aspect de nos fichiers “Contrôleurs” (les fichiers à la racine comme index.php, admin-add-article.php, etc.).


1. L’absurde : Le Contrôleur “Dieu” (God Object)

En procédural, le contrôleur a tendance à vouloir tout faire :

  • Valider les données ($_POST).
  • Connaître le détail de la structure de la BDD.
  • Chiffrer les mots de passe.
  • Préparer les messages d’erreur.
  • Gérer l’affichage.

Exemple absurde (Avant) : L’inscription

// register.php
$hashedPassword = password_hash($password, PASSWORD_DEFAULT);
if (insertUser($username, $email, $hashedPassword)) {
    // ...
}

Ici, c’est le script d’inscription qui décide comment hacher le mot de passe, et qui demande à une fonction insertUser d’insérer trois chaînes de caractères éparpillées.


2. La Solution Concrète : Le Contrôleur “Chef d’Orchestre”

Dans une architecture moderne (type MVC ou Active Record comme nous venons de l’implémenter), le contrôleur délègue tout le travail difficile aux Objets. Il ne fait que distribuer les tâches.

Exemple concret (Après) : L’inscription

// register.php (Branche 4)

// 1. On donne les données brutes à un nouvel objet User
$user = new User(username: $username, email: $email, role: 'user');

// 2. On ordonne à l'objet de s'occuper du mot de passe
$user->hashPassword($password);

// 3. On ordonne à l'objet de se sauvegarder lui-même
if ($user->save()) {
    return "success";
}

Le code est devenu déclaratif : il décrit ce qu’il veut faire, sans montrer comment la machinerie interne le fait.


3. Le cycle de vie complet d’une Entité (L’Update)

La modification d’un article (admin-update-article.php) est le meilleur exemple pour comprendre la puissance de notre système.

Avant (Procédural) :

// On passait 6 variables détachées les unes des autres
updateArticle($id, $title, $slug, $introduction, $content, $image);

Après (Objets) :

// 1. FACTORY : Le contrôleur demande à la classe de trouver l'article.
$article = Article::find($id);

// 2. MUTATION : Le contrôleur modifie directement les propriétés tapées.
$article->title        = $newTitle;
$article->introduction = $newIntro;
$article->image        = $newImage;

// 3. PERSISTANCE : Le contrôleur ordonne à l'objet de persister son état.
$article->save();

Pourquoi c’est immensément supérieur ?

  1. Vous n’avez pas besoin de retenir l’ordre de 6 ou 10 paramètres dans une fonction.
  2. Si vous oubliez de modifier un champ, l’objet garde son ancienne valeur par défaut (récupérée par le find()).
  3. L’autocomplétion de votre éditeur vous propose les champs disponibles quand vous tapez $article->.

Conclusion de la Branche 4

En passant des tableaux + fonctions procédurales à une Architecture par Modèles PHP 8.4 :

  • Vous avez protégé vos données (Types stricts, readonly).
  • Vous avez centralisé la logique métier (hashPassword(), belongsTo()) à l’intérieur des objets.
  • Vous avez rendu votre code DRY (Don’t Repeat Yourself) grâce à la classe mère Model.
  • Vous avez préparé le terrain pour de véritables frameworks modernes (Laravel, Symfony) qui fonctionnent exactement sur ces principes (l’Active Record de Laravel Eloquent fonctionne de la même manière).

Prêt à passer à la suite ?

Vous avez terminé cette leçon sur 06 - La Migration des Contrôleurs : Bilan. Continuez votre apprentissage avec la prochaine leçon ou explorez d'autres formations.