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
|
<?php
class ManifestationManager {
// on garde en mémoire l'objet PDO de travail
public static $_pdo;
public static function getManifestations ($params = array()) {
// on va vérifier avant tout qu'on a un objet pdo dispo
if (!(isset(self::$_pod) || self::$_pdo instanceof PDO))
throw new RuntimeException(__CLASS__ . " needs a valid PDO instance");
// on prépare la requête de séléction
$query = "SELECT * FROM `manifestations`";
// on ajoute les paramètres supplémentaires
if (!empty($params)) {
$pieces = array();
foreach ($params as $q_param) {
list($attr, $glue, $val) = $q_param;
$pieces[] = "`{$attr}`{$glue}'{$val}'";
}
$query .= implode(' AND ', $pieces);
}
// on prépare le statement
$stmt = self::$_pdo->prepare($query);
// on tente d'executer la requête
if ($stmt->execute()) {
// on créé une manifestation vide
// qui nous servira lors de l'iteration
$manifestation = new Manifestation();
$stmt->setFetchMode(PDO::FETCH_INTO, $manifestation);
return new PDOStatementIterator($stmt);
}
else
throw new RuntimeException("Query failed: $query");
}
public static function deleteManifestations ($params = array()) {
// on récupère la liste
$list = self::getManifestations($params);
$res = array();
foreach ($list as $manifestation) {
$res[] = $manifestation->delete();
}
// on renvoie les résultats
return $res;
}
} |
Partager