Mailinglisten-Archive |
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