📘 Chapitre – Exécuter des opérations CRUD en POO
1. 🎯 Objectif pédagogique
Savoir structurer un code PHP orienté objet pour exécuter des opérations CRUD (Create, Read, Update, Delete) de manière claire et réutilisable.
2. 📚 Concepts abordés
- Classe et méthode pour les opérations CRUD
- Instanciation d’objets et gestion des données
- Connexion PDO encapsulée dans une classe
- Bonnes pratiques de séparation logique (fichier
Database.php
+User.php
) - Exécution de méthodes :
create()
,read()
,update()
,delete()
3. 🧠 Explication théorique
En POO, les opérations CRUD sont regroupées dans des méthodes d’une classe. Par exemple, une classe User
peut contenir :
create()
pour ajouter un utilisateur,read()
pour afficher les informations,update()
pour les modifier,delete()
pour les supprimer.
Cette approche rend le code plus modulaire et facile à maintenir.
4. 🛠 Tutoriel pratique
Résumé du travail : Créer une classe User
avec des méthodes CRUD utilisant PDO.
Arborescence projet :
projet_poo_crud/
├── Database.php
├── User.php
└── index.php
Étape 1 : Classe de connexion (Database.php)
<?php
class Database {
private $host = "localhost";
private $dbname = "blogdb";
private $username = "root";
private $password = "";
public $conn;
public function getConnection() {
$this->conn = null;
try {
$this->conn = new PDO("mysql:host={$this->host};dbname={$this->dbname};charset=utf8",
$this->username, $this->password);
$this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo "Erreur de connexion : " . $e->getMessage();
}
return $this->conn;
}
}
Étape 2 : Classe User avec CRUD (User.php)
<?php
class User {
private $conn;
private $table = "users";
public $id;
public $nom;
public $email;
public function __construct($db) {
$this->conn = $db;
}
// CREATE
public function create() {
$sql = "INSERT INTO {$this->table} (nom, email) VALUES (:nom, :email)";
$stmt = $this->conn->prepare($sql);
return $stmt->execute(['nom' => $this->nom, 'email' => $this->email]);
}
// READ
public function read() {
$sql = "SELECT * FROM {$this->table}";
$stmt = $this->conn->query($sql);
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
// UPDATE
public function update() {
$sql = "UPDATE {$this->table} SET nom=:nom, email=:email WHERE id=:id";
$stmt = $this->conn->prepare($sql);
return $stmt->execute(['nom' => $this->nom, 'email' => $this->email, 'id' => $this->id]);
}
// DELETE
public function delete() {
$sql = "DELETE FROM {$this->table} WHERE id=:id";
$stmt = $this->conn->prepare($sql);
return $stmt->execute(['id' => $this->id]);
}
}
Étape 3 : Utilisation dans index.php
<?php
require 'Database.php';
require 'User.php';
// Connexion
$database = new Database();
$db = $database->getConnection();
// Créer un utilisateur
$user = new User($db);
$user->nom = "Alice";
$user->email = "alice@test.com";
$user->create();
// Lire les utilisateurs
$liste = $user->read();
foreach ($liste as $u) {
echo $u['nom'] . " - " . $u['email'] . "<br>";
}
5. 🧾 Résumé et points-clés
- Les classes permettent d’organiser les opérations CRUD en méthodes réutilisables.
- PDO est intégré directement dans la classe pour sécuriser les requêtes.
- Les fichiers sont séparés pour une meilleure maintenance (connexion et logique métier).
- Cette structure est une première étape vers le MVC.