Repenser l'application en POO
Objectifs pédagogiques
- Refactorer une application fonctionnelle en une structure orientée objet.
- Identifier les responsabilités de chaque composant.
- Organiser le code selon le modèle MVC (Modèle / Vue / Contrôleur).
- Préparer une architecture facilement extensible (services, repository, etc.).
Pourquoi passer en POO ?
L'approche procédurale convient pour débuter, mais elle atteint rapidement ses limites en termes de lisibilité, de modularité et de réutilisabilité. Passer en POO permet :
- De séparer les responsabilités.
- De faciliter les tests unitaires.
- De réutiliser et maintenir le code plus facilement.
- D’introduire des notions avancées comme les services, les interfaces ou l’injection de dépendances.
Consignes
L’objectif de cette étape est de reprendre le fonctionnement existant de la To-Do List et de réécrire l’application en suivant une approche orientée objet.
Contraintes techniques
- Utiliser PHP orienté objet (classes, méthodes, encapsulation…).
- Utiliser PDO pour toutes les interactions avec la base de données.
- Structurer le projet de manière modulaire (répertoire
models/,repositories/,views/, etc.).
Fonctionnalités à mettre en œuvre
- Afficher la liste des tâches.
- Ajouter une tâche.
- Supprimer une tâche.
- Changer l’état d’une tâche (faite / à faire).
- Modifier une tâche (édition du titre, de la catégorie, etc.).
Recommandations
- Prévoir une classe
Taskreprésentant une tâche. - Prévoir une classe
TaskRepositorypour accéder aux données (lecture, ajout, suppression…). - Organiser l'application pour isoler la logique métier, les vues et les traitements.
- Préparer les routes principales :
index.php,add.php,edit.php,delete.php, etc.
Livrables attendus
- Une structure de projet propre et lisible.
- Un jeu de classes bien nommé, cohérent, commenté si besoin.
- Une base de données alimentée et fonctionnelle.
- Un système complet d’édition de tâche, au même titre que l’ajout ou la suppression.
Pour aller plus loin (facultatif)
- Gérer les erreurs PDO de manière centralisée.
- Ajouter un champ
updated_atmis à jour automatiquement à chaque modification. - Prévoir un système de tri (par date, par état, etc.).