BaseModel.php 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. /**
  3. * Classe BaseModel
  4. *
  5. * Modèle de base pour gérer les interactions avec la base de données.
  6. * Fournit des méthodes simples pour les opérations CRUD.
  7. */
  8. if (!class_exists('BaseModel')) {
  9. class BaseModel {
  10. protected static $table;
  11. private static $pdo = null;
  12. /**
  13. * Obtient une connexion PDO à la base de données.
  14. *
  15. * @return PDO
  16. */
  17. private static function getPDO() {
  18. if (self::$pdo === null) {
  19. $config = require __DIR__ . '/../../config/config.php';
  20. self::$pdo = new PDO(
  21. 'mysql:host=' . $config['db_host'] . ';dbname=' . $config['db_name'],
  22. $config['db_user'],
  23. $config['db_password']
  24. );
  25. self::$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  26. }
  27. return self::$pdo;
  28. }
  29. /**
  30. * Récupère tous les enregistrements de la table.
  31. *
  32. * @return array
  33. */
  34. public static function all() {
  35. $pdo = self::getPDO();
  36. $stmt = $pdo->query('SELECT * FROM ' . static::$table);
  37. return $stmt->fetchAll(PDO::FETCH_ASSOC);
  38. }
  39. /**
  40. * Récupère un enregistrement par son ID.
  41. *
  42. * @param int $id
  43. * @return array|null
  44. */
  45. public static function find($id) {
  46. $pdo = self::getPDO();
  47. $stmt = $pdo->prepare('SELECT * FROM ' . static::$table . ' WHERE id = :id');
  48. $stmt->execute(['id' => $id]);
  49. return $stmt->fetch(PDO::FETCH_ASSOC);
  50. }
  51. }
  52. }