DI:
# im Konstruktor
$f = new ForeignClass();
$m = new MyClass($f);
# nun kann $m die Fremd-Instanz nutzen
# Beachte jedoch: $f wurde vor der Kapselung erstellt
# damit ist es möglich, $m von außerhalb zu verändern!!!!
Zur Laufzeit, Factorymethode
$m = new MyClass();
# $m ruft eine eigene Methode
# erst da wird die ForeignClass
# eingebunden
$f->challenge();
In beiden Varianten ist $m->FremdInstanz
das Ziel. Infolge dieser Aggregierung können Methoden der FremdInstanz an das Objekt der eigenen Klasse delegiert werden. D.h., die Methoden der fremden Klasse werden zu eigenen Methoden gemacht.
.