Tp 6 php namespaces controllers blogpoo
Thème :
Junior
1 vues ·1/12 leçonsPlan 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 dossierapp/. - Simplification : Supprimer tous les
require_oncede modèles et de traits danshelpers.phpau profit d’un seulrequire_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é
usepour 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.