Gebruik in een klasse
Query’s kunnen worden opgehaald als objecten op basis van aangepaste klassen. Bijvoorbeeld, als we een klasse hebben met de naam ExampleClass, dan retourneert de volgende query objecten van het type ExampleClass.
$result = $connection->query("SELECT id, title FROM {example_table}", [], [
'fetch' => 'ExampleClass',
]);
Als de klasse een methode __construct() heeft, worden objecten aangemaakt, eigenschappen toegevoegd aan het object en daarna wordt de methode __construct() aangeroepen. Bijvoorbeeld, als je de volgende klasse en query hebt:
class ExampleClass {
function __construct() {
// Doe iets
}
}
$result = $connection->query("SELECT id, title FROM {example_table}", [], [
'fetch' => 'ExampleClass',
]);
Het object wordt aangemaakt, de eigenschappen id en title worden toegevoegd aan het object, en daarna wordt __construct() uitgevoerd. De volgorde van deze gebeurtenissen houdt verband met een bug in PHP voor versies lager dan 5.2.
Als er in het object een __construct()-methode bestaat die moet worden uitgevoerd vóórdat eigenschappen aan het object worden toegevoegd, laat het volgende voorbeeld zien hoe dit te doen.
$result = $connection->query("SELECT id, title FROM {example_table}");
foreach ($result->fetchAll(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, 'ExampleClass') as $record) {
// Doe iets
}
De argumenten die aan fetchAll worden doorgegeven, kunnen op dezelfde manier worden gebruikt. PDO::FETCH_CLASS vertelt fetchAll om de geretourneerde resultset te nemen en de waarden als eigenschappen toe te voegen aan een object van het type ExampleClass (de tweede parameter). PDO::FETCH_PROPS_LATE vertelt fetchAll om de resultset als eigenschappen toe te voegen nádat __construct() is aangeroepen.