CRUD avec PDO et méthode hydrate()
Objectif : Apprendre à utiliser la POO en PHP et réaliser les opérations CRUD (Create, Read, Update, Delete) sur une base MySQL, tout en découvrant le principe de l’hydration d’un objet.
Contexte
Vous allez créer une petite application permettant de gérer une liste d’articles.
Chaque article possède :
- un id (identifiant unique),
- un titre,
- un contenu.
L’application devra permettre :
- d’ajouter un nouvel article,
- d’afficher tous les articles existants,
- de modifier un article existant,
- de supprimer un article.
Étapes à réaliser
1. Création de la base de données
- Créez une base de données MySQL (par exemple nommée
test
). - Créez une table
article
avec les colonnes suivantes :id
(clé primaire auto-incrémentée),titre
(texte court),contenu
(texte long).
2. Classe Article
avec méthode hydrate()
- Créez une classe
Article
qui représente un article avec des attributs privés. - Ajoutez des getters et setters pour chaque attribut.
- Ajoutez une méthode
hydrate(array $data)
qui, pour chaque clé du tableau, appellera automatiquement le setter correspondant (ex : clétitre
→ méthodesetTitre()
si elle existe). - Le constructeur doit permettre d’appeler directement
hydrate()
lorsqu’on fournit un tableau.
Exemple indicatif de logique d’hydratation (à adapter) :
public function hydrate(array $data) {
foreach ($data as $key => $value) {
$method = 'set' . ucfirst($key);
if (method_exists($this, $method)) {
$this->$method($value);
}
}
}
3. Classe ArticleRepository
- Créez une classe
ArticleRepository
qui utilisera PDO pour se connecter à la base. - Implémentez les méthodes suivantes :
add(Article $a)
: insère un nouvel article en base,findAll()
: retourne tous les articles sous forme d’objetsArticle
,update(Article $a)
: modifie un article existant,delete(int $id)
: supprime un article par son id.
Astuce : utilisez fetchAll(PDO::FETCH_ASSOC)
pour récupérer vos lignes sous forme de tableaux associatifs, puis hydrate()
pour construire les objets.
4. Script principal
- Écrivez un script
index.php
qui :- crée un objet
PDO
, - instancie un
ArticleRepository
, - ajoute un ou plusieurs articles,
- affiche la liste des articles (id + titre),
- modifie un article existant,
- supprime un article.
- crée un objet
Bonus (optionnel)
- Ajouter un formulaire HTML pour saisir un article et l’enregistrer en base.
- Créer une page de listing avec boutons modifier et supprimer.
Ce contenu est réservé aux membres du site. Si vous êtes un utilisateur existant, veuillez vous connecter. Les nouveaux utilisateurs peuvent s'inscrire ci-dessous.