Seb-Info

TP CRUD en POO (PHP)

TP CRUD en POO (PHP)

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

  1. Créez une base de données MySQL (par exemple nommée test).
  2. 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éthode setTitre() 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’objets Article,
    • 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.

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.

Connexion pour les utilisateurs enregistrés
   
Nouvel utilisateur ?
*Champ requis
Powered by WP-Members