phpbar.de logo

Mailinglisten-Archive

[php] geht das auch dynamisch ...

[php] geht das auch dynamisch ...

Martin Adler martin.adler at continum.net
Fre Jul 7 10:42:22 CEST 2006


Hallo,

Norbert Pfeiffer wrote:
> Hallo Hannes,
> 
> es geht mir nicht um "Gisela", es geht mir um "Peter".
> Dessen Code wird durch das "extends" verdorben.
> Wenn man z.B.:
> 
> class Peter extends Gisela {}
> class Peter extends Julia {}
> class Peter extends Sieglinde {}
> class Peter extends Thea {}
> 
> anwenden koennte, muss man viermal "Peter" pflegen,
> weil die Core-Developer hier keine Dynamik zulassen.
> 
> Und einfach umdrehen geht auch nicht, denn genau so
> wenig, wie sich "Peter" mit einer Frau begnuegt,
> beschraenken sich die Damen mit einem Kerl.
> 
> Sinnvoll waere IMHO, dass man bei der Instantiierung
> angibt, mit welcher Klasse erweitert wird, und es nicht
> schon im Quellcode festschreiben muss.

die Frage die sich mir hier aufdrängt ist, was Peter von Gisela bitte 
schön erweitern soll?
An dieser stelle ist Vererbung genau das falsche Mittel. Viel eher wäre 
hier ein sog. *Using* angebracht. Ein Objekt benutzt ein anderes. D.h. 
bei der Instanziierung eines Objekts (oder auch später) wird dem Objekt 
ein anderes übergeben.

Vererbungen sind feste zusammenhänge und lassen keine dynamik zu was 
auch korrekt ist.

Ein VW ist ein spezieller Typ von Auto, Auto ist ein spezieller Typ von 
Kraftwagen.
VW extens Auto {}
Auto extens Kraftwagen {}

Peter ist aber kein spezieller typ von Gisela. Peter geht höchstens mit 
Giesela auf eine bestimmte Art und Weise um und das kann er nur, wenn 
Gisela auch existiert also instanziiert ist.

$peter->reden(&$gisela, "Hallo");

vielleicht nicht das glücklichste beispiel aber so ungefähr die Methodik.

beste grüße
Martin

php::bar PHP Wiki   -   Listenarchive