1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
<?php
class Utilisateur {
// Les données de l'instance
protected $_data;
// Le constructeur
public function __construct ($id) {
// réccupérer les données depuis la db
$this->retrieve($id);
}
// Permet d'utiliser les données de l'instance comme des attributs classiques
public function __get ($key) {
return isset($this->_data[$key]) ? $this->_data[$key] : null;
}
// Permet de définir les données de l'instance comme des attributs classiques
public function __set ($key, $value) {
$this->_data[$key] = $value;
}
// créer un nouvel enregistrement
public static function create ($data) {
if (empty($data)) return false;
$query = "INSERT INTO `Utilisateurs` (`nom`,`prenom`,age`) VALUES (:nom,:prenom,:age)";
// la classe Database est un singleton de PDO (c'est plus pratique, mais pas vraiment propre)
$stmt = Database::prepare($query);
return $stmt->execute($data);
}
// réccupérer un enregistrement
public function retrieve ($id) {
$query = "SELECT `id`,`nom`,`prenom`,age` FROM `Utilisateurs`";
if ($stmt = Database::query($query)) {
// Mettre à jour les données de l'instance
$this->_data = $stmt->fetch(PDO::FETCH_ASSOC);
return $this;
}
return false;
}
// mettre à jour l'enregistrement
public function update () {
if (empty($this->_data)) return false;
$query = "UPDATE `Utilisateurs` SET `nom`=:nom,`prenom`=:prenom,`age`=:age";
$stmt = Database::prepare($query);
$stmt->bindParam(':nom', $this->_data['nom']);
$stmt->bindParam(':prenom', $this->_data['prenom']);
$stmt->bindParam(':age', $this->_data['age']);
return $stmt->execute();
}
// supprimer l'enregistrement
public function delete () {
if (empty($this->_data)) return false;
$query = "DELETE FROM `Utilisateurs` WHERE `id`={$this->_data['id']}";
return Database::exec($query);
}
// permettre la création d'une instance de manière statique (Utilisateur::export(1) équivaut à new Utilisateur(1))
public static function export ($id) {
return new self($id);
}
} |
Partager