Les modèles : Fichier models/Food.php
Explications générales sur les Modèles
Dans le contexte de l'architecture MVC, les modèles sont responsables de la gestion des données de l'application. Ils interagissent directement avec la base de données pour effectuer des opérations CRUD (Create, Read, Update, Delete). Les modèles sont conçus pour encapsuler la logique de données, ce qui permet de séparer les préoccupations et de rendre le code plus modulaire et facile à maintenir.
Explication détaillée du fichier models/Food.php
<?php
class Food {
// Méthode pour récupérer tous les aliments de la base de données
public static function getAll($pdo) {
// Préparation et exécution d'une requête SQL pour sélectionner tous les aliments
$stmt = $pdo->query('SELECT * FROM foods');
// Récupération de tous les résultats sous forme de tableau associatif
// PDO::FETCH_ASSOC : retourne un tableau associatif indexé par le nom des colonnes
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
// Méthode pour récupérer un aliment spécifique par son ID
public static function getById($pdo, $id) {
// Préparation d'une requête SQL avec un paramètre pour éviter les injections SQL
$stmt = $pdo->prepare('SELECT * FROM foods WHERE id = ?');
// Exécution de la requête avec l'ID comme paramètre
$stmt->execute([$id]);
// Récupération du résultat sous forme de tableau associatif
return $stmt->fetch(PDO::FETCH_ASSOC);
}
// Méthode pour créer un nouvel aliment dans la base de données
public static function create($pdo, $name, $type, $emoji) {
// Préparation d'une requête SQL pour insérer un nouvel aliment
$stmt = $pdo->prepare('INSERT INTO foods (name, type, emoji) VALUES (?, ?, ?)');
// Exécution de la requête avec les paramètres fournis
$stmt->execute([$name, $type, $emoji]);
// Récupération de l'ID du dernier enregistrement inséré
return $pdo->lastInsertId();
}
// Méthode pour mettre à jour un aliment existant dans la base de données
public static function update($pdo, $id, $name, $type, $emoji) {
// Préparation d'une requête SQL pour mettre à jour un aliment
$stmt = $pdo->prepare('UPDATE foods SET name = ?, type = ?, emoji = ? WHERE id = ?');
// Exécution de la requête avec les nouveaux paramètres et l'ID de l'aliment à mettre à jour
return $stmt->execute([$name, $type, $emoji, $id]);
}
// Méthode pour supprimer un aliment de la base de données
public static function delete($pdo, $id) {
// Préparation d'une requête SQL pour supprimer un aliment
$stmt = $pdo->prepare('DELETE FROM foods WHERE id = ?');
// Exécution de la requête avec l'ID de l'aliment à supprimer
return $stmt->execute([$id]);
}
}
?>
Explications supplémentaires
-
Méthodes statiques : Les méthodes de la classe
Foodsont définies comme statiques, ce qui signifie qu'elles peuvent être appelées sans avoir besoin d'instancier la classe. Cela est utile pour des fonctions utilitaires qui n'ont pas besoin de maintenir un état. -
Préparation des requêtes : L'utilisation de
preparepour les requêtes SQL est une bonne pratique pour éviter les injections SQL. Cela permet de séparer la structure de la requête des données, ce qui rend les requêtes plus sûres. -
Exécution des requêtes : La méthode
executeest utilisée pour exécuter les requêtes préparées avec les paramètres fournis. Cela permet de lier les valeurs aux placeholders dans la requête SQL. -
Récupération des résultats : Les méthodes
fetchAlletfetchsont utilisées pour récupérer les résultats des requêtes SQL sous forme de tableaux associatifs, ce qui facilite l'accès aux données par le nom des colonnes.
En utilisant ce modèle, vous pouvez facilement interagir avec la base de données pour effectuer des opérations CRUD sur les aliments, ce qui est essentiel pour toute application web qui nécessite une gestion de données.