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

Plan Branche 6 : Namespaces, Autoloading et Contrôleurs

Cette branche marque la fin des require_once manuels et l’organisation du code en Contrôleurs professionnels.


🎯 Objectif 1 : Autoloading PSR-4 avec Composer

  • Action : Initialiser Composer (composer init).
  • Configuration : Configurer le namespace racine App\ vers le dossier app/.
  • Simplification : Supprimer tous les require_once de modèles et de traits dans helpers.php au profit d’un seul require_once 'vendor/autoload.php'.

🎯 Objectif 2 : Namespaces et Organisation

  • Action : Ajouter namespace App\Models; à tous les modèles.
  • Action : Ajouter namespace App\Traits; à tous les traits.
  • Action : Ajouter namespace App\Enums; à tous les enums.
  • Utilisation : Utiliser le mot-clé use pour importer les classes nécessaires.

🎯 Objectif 3 : Introduction des Contrôleurs

  • Action : Créer un dossier app/Controllers/.
  • Refactorisation : Déplacer la logique PHP des fichiers racine (ex: admin-add-article.php) vers des classes Contrôleurs (ex: ArticleController.php).
  • Structure : Chaque contrôleur gérera une entité (Article, User, Comment).

🎯 Objectif 4 : Nettoyage de la Racine

  • Action : Transformer les fichiers .php à la racine en simples points d’entrée qui appellent les contrôleurs.
  • Objectif : Isoler totalement la logique métier (Controllers/Models) du rendu (Views).

📝 Liste des fichiers à créer/modifier :

Fichier Action
composer.json Création & Configuration PSR-4
app/Models/*.php Ajout des Namespaces
app/Traits/*.php Ajout des Namespaces
app/Enums/*.php Ajout des Namespaces
app/Controllers/ArticleController.php Création
app/Controllers/AuthController.php Création
app/helpers.php Remplacement des require par l’autoload
index.php, etc. Adaptation pour utiliser les Contrôleurs

Architecture MVC Modernisée (Branche 6)

L’application a été entièrement refactorisée pour séparer la logique métier (Contrôleurs) de l’affichage (Vues) et de la gestion des données (Modèles).

🛠 Services Core (app/)

Renderer.php (App\Renderer)

Permet d’afficher une vue dans un layout spécifique.

Renderer::render('nom/vue', $data, 'layout-name');

Http.php (App\Http)

Gère les réponses HTTP et les redirections.

Http::redirect('page.php');

🎮 Contrôleurs (app/Controllers/)

Contrôleur Rôle Méthodes clés
ArticleController Gestion des articles indexPublic, show, add, edit, delete
UserController Profils et Admin update, index, indexComments
AuthController Sessions login, register, logout
CommentController Commentaires save, delete
AdminController Dashboard Admin index

🔗 URLs SEO-Friendly

Les articles sont maintenant accessibles via : user-article-show.php?id=XX&slug=mon-article-titre

📂 Structure des fichiers racine

Chaque fichier à la racine est maintenant structuré comme ceci :

session_start();
require_once 'app/helpers.php';
use App\Controllers\MonControleur;

$controller = new MonControleur();
$controller->maMethode();

Prêt à passer à la suite ?

Vous avez terminé cette leçon sur Plan Branche 6 : Namespaces, Autoloading et Contrôleurs. Continuez votre apprentissage avec la prochaine leçon ou explorez d'autres formations.