Verwendung in der Klasse
Abfragen können in Objekte basierend auf benutzerdefinierten Klassen extrahiert werden. Zum Beispiel, wenn wir eine Klasse mit dem Namen ExampleClass haben, gibt die folgende Abfrage Objekte vom Typ ExampleClass zurück.
$result = $connection->query("SELECT id, title FROM {example_table}", [], [ 'fetch' => 'ExampleClass', ]);
Wenn die Klasse eine __construct()-Methode besitzt, werden die Objekte erstellt, die Eigenschaften dem Objekt hinzugefügt und anschließend die __construct()-Methode aufgerufen. Zum Beispiel, wenn Sie die folgende Klasse und Abfrage haben.
class ExampleClass { function __construct() { // Etwas tun } } $result = $connection->query("SELECT id, title FROM {example_table}", [], [ 'fetch' => 'ExampleClass', ]);
Das Objekt wird erstellt, die Eigenschaften id und title werden dem Objekt hinzugefügt, und danach wird __construct() ausgeführt. Die Reihenfolge dieser Ereignisse hängt mit einem Bug in PHP für Versionen unter 5.2 zusammen.
Wenn das Objekt eine __construct()-Methode hat, die vor dem Hinzufügen der Eigenschaften zum Objekt ausgeführt werden muss, zeigt das folgende Beispiel, wie dies gemacht wird.
$result = $connection->query("SELECT id, title FROM {example_table}"); foreach ($result->fetchAll(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, 'ExampleClass') as $record) { // Etwas tun }
Die an fetchAll übergebenen Argumente können auf dieselbe Weise verwendet werden. PDO::FETCH_CLASS sagt fetchAll, das zurückgegebene Ergebnis-Set zu nehmen und Werte als Eigenschaften zum Objekt vom Typ ExampleClass (zweiter Parameter) hinzuzufügen. PDO::FETCH_PROPS_LATE sagt fetchAll, das Ergebnis-Set als Eigenschaften zum Objekt erst nach dem Aufruf von __construct() hinzuzufügen.
Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.