Utilisation dans une classe
Les requêtes peuvent être extraites en objets basés sur des classes personnalisées. Par exemple, si nous avons une classe nommée ExampleClass, la requête suivante retournera des objets de type ExampleClass.
$result = $connection->query("SELECT id, title FROM {example_table}", [], [ 'fetch' => 'ExampleClass', ]);
Si la classe possède une méthode __construct(), les objets seront créés, les propriétés seront ajoutées à l'objet, puis la méthode __construct() sera appelée. Par exemple, si vous avez la classe suivante et la requête suivante.
class ExampleClass { function __construct() { // Faire quelque chose } } $result = $connection->query("SELECT id, title FROM {example_table}", [], [ 'fetch' => 'ExampleClass', ]);
L'objet sera créé, les propriétés id et title seront ajoutées à l'objet, puis __construct() sera exécuté. L'ordre de ces événements est lié à un bug PHP pour les versions inférieures à 5.2.
Si la méthode __construct() doit être exécutée avant l'ajout des propriétés à l'objet, l'exemple suivant montre comment faire.
$result = $connection->query("SELECT id, title FROM {example_table}"); foreach ($result->fetchAll(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, 'ExampleClass') as $record) { // Faire quelque chose }
Les arguments passés à fetchAll peuvent être utilisés de la même manière. PDO::FETCH_CLASS indique à fetchAll de prendre le jeu de résultats retourné et d’ajouter les valeurs en tant que propriétés à un objet de type ExampleClass (deuxième argument). PDO::FETCH_PROPS_LATE indique à fetchAll d’ajouter les propriétés issues du jeu de résultats après l’appel de __construct().