Module PHP.13 – Mini-projet
Objectif
Créer un backend simple avec CRUD complet pour valider toutes les compétences PHP acquises.
Théorie
CRUD
CRUD signifie Create, Read, Update, Delete (Créer, Lire, Modifier, Supprimer).
Opérations de base :
- Create : Créer une nouvelle entrée
- Read : Lire/afficher des entrées
- Update : Modifier une entrée existante
- Delete : Supprimer une entrée
Architecture du projet
Structure recommandée :
projet-crud/
├── public/
│ └── index.php # Point d'entrée
├── src/
│ ├── Models/
│ │ └── Task.php # Modèle de données
│ ├── Controllers/
│ │ └── TaskController.php
│ └── Views/
│ ├── list.php
│ ├── create.php
│ └── edit.php
├── data/
│ └── tasks.json # Stockage (simule BDD)
└── README.md
Spécifications du projet
Fonctionnalités
1. Créer une tâche (Create)
- Formulaire avec : titre, description, priorité, date
- Validation des champs
- Sauvegarde dans JSON
- Message de confirmation
2. Lister les tâches (Read)
- Afficher toutes les tâches
- Afficher les détails de chaque tâche
- Filtrer par statut (toutes, actives, terminées)
- Trier par date, priorité
3. Modifier une tâche (Update)
- Formulaire pré-rempli
- Modification des champs
- Sauvegarde des modifications
- Message de confirmation
4. Supprimer une tâche (Delete)
- Confirmation avant suppression
- Suppression de la tâche
- Message de confirmation
5. Fonctionnalités bonus
- Marquer comme terminée
- Recherche de tâches
- Statistiques (nombre total, terminées, actives)
Structure de données
Format JSON :
[
{
"id": 1,
"titre": "Apprendre PHP",
"description": "Maîtriser les bases",
"priorite": "haute",
"date": "2026-01-26",
"termine": false,
"date_creation": "2026-01-25"
}
]
Guide de développement
Étape 1 : Modèle (Model)
// src/Models/Task.php
class Task
{
private int $id;
private string $titre;
private string $description;
private string $priorite;
private string $date;
private bool $termine;
// Constructeur, getters, setters
// Méthodes : toArray(), fromArray()
}
Étape 2 : Service de données
// src/Services/TaskService.php
class TaskService
{
private string $fichier = 'data/tasks.json';
public function getAll(): array
{
// Lire et retourner toutes les tâches
}
public function getById(int $id): ?Task
{
// Retourner une tâche par ID
}
public function create(Task $task): bool
{
// Créer une nouvelle tâche
}
public function update(Task $task): bool
{
// Modifier une tâche
}
public function delete(int $id): bool
{
// Supprimer une tâche
}
}
Étape 3 : Controller
// src/Controllers/TaskController.php
class TaskController
{
private TaskService $service;
public function index()
{
// Afficher la liste
}
public function create()
{
// Afficher formulaire création
}
public function store()
{
// Traiter création
}
public function edit(int $id)
{
// Afficher formulaire modification
}
public function update(int $id)
{
// Traiter modification
}
public function delete(int $id)
{
// Supprimer
}
}
Étape 4 : Routes simples
// public/index.php
$action = $_GET['action'] ?? 'index';
$id = $_GET['id'] ?? null;
$controller = new TaskController();
switch ($action) {
case 'create':
$controller->create();
break;
case 'store':
$controller->store();
break;
case 'edit':
$controller->edit($id);
break;
case 'update':
$controller->update($id);
break;
case 'delete':
$controller->delete($id);
break;
default:
$controller->index();
}
Critères d'évaluation
Fonctionnalité (40%) :
- CRUD complet fonctionnel
- Validation des données
- Gestion des erreurs
Code (30%) :
- Structure MVC
- Code organisé et commenté
- Respect des bonnes pratiques
Sécurité (20%) :
- Protection XSS
- Validation des entrées
- Gestion sécurisée des fichiers
Design (10%) :
- Interface claire
- Messages utilisateur appropriés
Exercice - Développement
Suivez ces étapes pour développer votre projet :
-
Setup (30 min)
- Créez la structure de dossiers
- Configurez l'autoloading
- Créez le fichier JSON initial
-
Modèle (1h)
- Créez la classe Task
- Implémentez toutes les méthodes
- Testez avec PHP CLI
-
Service (1h)
- Créez TaskService
- Implémentez CRUD
- Testez chaque méthode
-
Controller (1h30)
- Créez TaskController
- Implémentez toutes les actions
- Gestion des erreurs
-
Vues (1h30)
- Créez les formulaires
- Créez la liste
- Ajoutez le style CSS
-
Intégration (1h)
- Connectez tout
- Testez toutes les fonctionnalités
- Corrigez les bugs
-
Améliorations (1h)
- Ajoutez les fonctionnalités bonus
- Améliorez l'UX
- Finalisez le design
Quiz de révision
Avant de commencer, vérifiez vos connaissances :
- Comment créer une classe en PHP ?
- Comment lire/écrire un fichier JSON ?
- Comment valider les données POST ?
- Comment protéger contre XSS ?
- Comment structurer un projet MVC ?
Ressources
Si vous êtes bloqué :
- Revisitez les modules précédents
- Documentation PHP officielle : php.net
- Stack Overflow pour problèmes spécifiques
Bonnes pratiques à respecter :
- Validation de toutes les entrées
- Protection XSS partout
- Gestion d'erreurs appropriée
- Code commenté et documenté
- Structure claire et organisée
Objectif final
Créer une application CRUD complète qui démontre :
- Maîtrise de la syntaxe PHP
- Compréhension de la POO
- Gestion des fichiers et JSON
- Bonnes pratiques de sécurité
- Organisation professionnelle du code
Validation : Vous avez terminé PHP quand votre application CRUD est fonctionnelle, sécurisée et bien organisée.
Félicitations ! Vous avez terminé l'apprentissage complet de PHP. Vous êtes maintenant capable de créer des applications web backend professionnelles.