Tach!
Wie wir wissen, ist bei diesem PDO-Objekt das Attribut PDO::ATTR_DEFAULT_FETCH_MODE auf PDO::FETCH_ASSOC gesetzt.
Das stört uns aber nicht weiter, weil beim Aufruf von PDOStatement::fetch() der Fetch-Style individuell angegeben werden kann.
Nun schauen wir doch mal was passiert, wenn wir dieses Attribut nach der Übergabe an den Konstruktor ändern:
Wenn man trotz der Möglichkeit der individuellen Angabe auf den Defaultwert setzt, und diesen - bezogen auf das PDO-Objekt - globalen Wert ändert, dann kann das durchaus ein Problem werden. Ist dann aber persönliches Pech, weil vermeidbar.
Es zeigt sich, daß die Änderung am PDO auch dann wirksam werden, wenn diese Änderung nach der sog. Dependency Injection erfolgt. Die Erklärung hierfür ist ganz einfach: Das PDO-Objekt wird in der Eigenschaft $this->PDO referenziert. Das heißt, die Eigenschaft beeinhaltet keine Kopie sondern eine Referenz.
Dass bei Objekten Referenzen übergeben werden, ist das übliche Verhalten.
Daraus ergibt sich eine wichtige Schlussfolgerung in Sachen Dependency Injection: Das injezierte Objekt kann im Nachhinein geändert werden. Und zwar außerhalb der Kapselung!
Ist nur kein spezielles Problem der DI.
dedlfix.