Tp 6 php namespaces controllers blogpoo
Thème :
Junior
1 vues ·7/12 leçons

06. Architecture des Contrôleurs (MVC)

Le passage d’un code procédural (script par script) à une architecture par Contrôleurs est la clé d’une application évolutive.

1. Définition et Rôle

Un Contrôleur est une classe dont le rôle est de faire le lien entre l’utilisateur et le système.

  • Il reçoit la requête (via les paramètres GET/POST).
  • Il demande aux modèles de récupérer ou modifier les données.
  • Il décide quelle vue afficher grâce au Renderer.

2. Analyse d’une méthode de contrôleur type

Prenons l’exemple de la suppression d’un article :

public function delete(int $id): void {
    // 1. Sécurité : Vérifie si l'utilisateur est admin
    checkAdmin();

    // 2. Récupération : Demande au Modèle de trouver l'article
    $article = Article::find($id);

    // 3. Validation : Si l'article n'existe pas, on redirige vers une erreur
    if (!$article) {
        Http::redirect("error.php?message=Article introuvable");
    }

    // 4. Action : Exécute la suppression en base de données
    $article->delete();

    // 5. Feedback : Enregistre un message de succès en session
    $_SESSION['success']['delete'] = "Article supprimé.";

    // 6. Réponse : Redirige l'utilisateur vers la liste
    Http::redirect('admin-list-article.php');
}

Pourquoi cette structure ?

  • Lisibilité : Le déroulement de l’action est clair et linéaire.
  • Réutilisation : On peut appeler cette logique de suppression depuis une interface web, mais aussi plus tard depuis une API ou une commande terminal.
  • Découplage : La logique n’est pas “mélangée” au code HTML. On peut modifier le design de la page sans risquer de casser la suppression.

3. Avantages de la centralisation

Auparavant, la logique de gestion des articles était éparpillée dans :

  • admin-add-article.php
  • admin-delete-article.php
  • admin-update-article.php

Désormais, tout est dans ArticleController.php. Avantage direct : Si vous voulez changer la manière dont les images sont stockées, vous ne modifiez qu’un seul fichier au lieu de trois.

4. Comparaison avec Laravel

Notre architecture a été pensée pour être “Laravel-ready”. Voici les équivalences :

Notre Blog Framework Laravel Pourquoi c’est identique ?
App\Controllers App\Http\Controllers Même logique de centralisation des actions.
App\Models App\Models Même utilisation de classes pour représenter la base de données.
Renderer::render() view() Séparation totale entre les données et le template HTML.
Http::redirect() redirect() Abstraction des headers HTTP pour plus de sécurité.

L’avantage pour vous

En apprenant à structurer votre blog ainsi, vous faites 80% du chemin pour maîtriser Laravel. La seule différence majeure est que Laravel automatise encore plus de choses (comme le routing que nous verrons en Phase 7).

5. Interaction avec le Renderer et Http

Le contrôleur ne fait plus d’ include ni d’ header(). Il utilise nos services :

  • Renderer::render() : Équivalent à la fonction view() de Laravel.
  • Http::redirect() : Équivalent au helper redirect() de Laravel.

Cela permet de garder le contrôleur “propre” et facile à tester, car il ne dépend pas directement des fonctions natives complexes de PHP.

Prêt à passer à la suite ?

Vous avez terminé cette leçon sur 06. Architecture des Contrôleurs (MVC). Continuez votre apprentissage avec la prochaine leçon ou explorez d'autres formations.