Hallo MB,
bei der PDO Instanziierung gibt ja options. Erlangt man auch mit
PDO::setAttribut()
und fetch Zugriff?
Ähh. Wenn Du meinst, dass man die Wahl hat zwischen einer der drei folgenden Möglichkeiten:
$db = new PDO($dsn, $user, $passw, [ PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ]);
// oder
$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
// oder
$stmt->fetch(PDO::FETCH_OBJ);
dann würde ich Dir zustimmen wollen.
Auf dem Statement kannst Du auch noch
$stmt->setFetchMode(PDO::FETCH_OBJ);
aufrufen.
Ich vermute allerdings, dass Du auf die Reihenfolge achten musst. Es gibt ja zwei denkbare Möglichkeiten der PDO-Implementierung, und ich weiß nicht, was implementiert ist.
- Das Statement hat einen internen Rückverweis auf das PDO Objekt und holt sich - solange kein eigener Fetch-Mode eingestellt wird - den Default-Fetch-Mode des PDO Objekts.
- Das Statement bekommt bei Konstruktion den Default-Fetch-Mode des PDO-Objekts und merkt ihn sich.
Wenn Variante 2 implementiert ist, dann ändert sich der Fetchmode im Statement nicht, wenn Du nach Erzeugung des Statements $db->setAttribute() für den Default-Fetch-Mode aufrufst.
Der an fetch/fetchAll übergebene Fetch-Mode sollte aber auf jeden Fall Vorrang vor Statement und PDO haben.
Was Du mit "Value-Prinzip" meinst, verstehe ich nicht. Meine Implementationsvariante 2?
Wobei ja mit fetch-Objekte aller Art
PDO::ATTR_DEFAULT_FETCH_MODE
der key schon vorgegeben ist oder nich?
Wenn Du hiermit meinst, dass man den fetch-Methoden nur den PDO::FETCH_*
Wert geben muss und nicht den Schlüsselnamen PDO::ATTR_DEFAULT_FETCH_MODE
, dann ja.
Rolf
Dosen sind silbern