Eine DB Anbindung (PDO) wäre noch ein schönes Beispiel für DI+Factory. Wird eine Solche generell benötigt, etwa weil sämtliche Views eine DB Anbindung brauchen, gibst Du das PDO Objekt in den Konstruktor.
Ist es jedoch so, daß eine DB Anbindung nur für bestimmte Seiten und bestimmte Aktionen erforderlich ist, wird sie später erstellt. Z.B. im Rahmen einer Factory, hierzu gibt es eine Methode $pdo=$this->pdo('DBname')
und wenn $pdo
danach in weiteren Methoden Deiner Anwendung gebraucht wird, legst Du das PDO in eine Eigenschaft:
# $dbname ist eine Eigenschaft des Modells
$this->getProp('dbname');
# rufe die Factory
$pdo = $this->pdo($dbname);
# SQL Statements abwickeln
# und danach
# pdo sichern für weitere Verwendung
$this->PDO = $pdo;
Nutze Eigenschaften!
.