Circum Blog

Circum Net – IT – Conseils pratiques

SQLite: récupération d’un résultat dans un objet spécifique

PHP, SQLite

La méthode setFetchMode de la librairie PDO permet de récupérer, dans un objet spécifique, une ligne résultat d’une requête SQL (SELECT).

En fixant le premier argument de cette méthode à PDO::FETCH_CLASS et en lui fournissant le nom d’une classe (définie préalablement), c’est cette dernière qui va être invoquée et ses propriétés vont être affectées avec les valeurs des champs correspondant (le constructeur est également appelé). Voici un code fonctionnel qui illustre cela.

PDO::FETCH_CLASS

<?php
class Movie
    {
    public $title;
    public $director;
    public $description;
    public $year;

    // Les propriétés de l'objet sont fixées par PDO avant l'appel au constructeur
    // Le constructeur peut ensuite prendre le relais et intervenir sur les propriétés
    function __construct()
        {
        $this->title = strtoupper($this->title);
        }
    }

try
    {
    $dbh = new PDO('sqlite:./movies');

    $sql = 'SELECT * FROM movies';
    $stmt = $dbh->query($sql);

    // Retourne une nouvelle instance de la classe demandée
    // Le mapping est fait entre les champs et les propriétés
    $stmt->setFetchMode(PDO::FETCH_CLASS, 'Movie');

    while($obj = $stmt->fetch())
        {
        echo $obj->title . ' - ' . $obj->director . PHP_EOL;
        }

    }
catch(PDOException $e)
    {
    echo $e->getMessage();
    }
?>