Hi!
Niemand geht gerne auf unverlinkte URLs - und wenn sie, so wie bei mir der Fall, den Browser erstmal reproduzierbar zum Absturz bringen, ist das böse.
Dazu kann er ja nun wirklich nichts zu, die Schuld liegt da wohl eher bei den Browser-Entwicklern, denn ein Browser sollte nicht abstürzen, auch nicht wenn er grausamsten Code vorgeworfen bekommt ;-)
(Mit Firebird wäre das nicht passiert... ;-))
---Schnipp---
[...]
---Schnapp---
Die Frage ist: Warum hast du die Klassen so gewählt, wie du sie gewählt hast?
eine gute Frage ;-)
Das she ich auch so, man muss wiessen was die Applikation machen soll um den Ansatz bewerten zu können.
Dass du mit Vererbung eine Menge erreichen kannst, ist klar.
mir gerade in diesem Fall nicht.
Leider kann eine Klasse nur die Eigenschaften einer übergeordneten Klasse erben, nicht aber zwei existierende Klassen zusammenführen zu einer neuen Klasse.
Zum Glück, denn das ist ja der Sinn von Verwerbung.
Vererbung sollte man IMHO nur verwenden, wenn das erbende Objekt eine Teilmenge des Elternobjektes ist, und dieses spezialisiert.
Also z.B.
Fahrzeug
A
|
------
| |
Auto Motorrad
oder
User
A
|
------
| |
Admin Gast
Sobald man anfängt nur weil man es gut gebrauhen kann von Objekten zu erben, mit denen man überhaupt nichts zu tun hat, dann ist das sowas wie "prozedurales Programmieren mit Klassen und Objekten", und keine OOP.
Daher verwende ich vererbung vor allem bei den Objekten der Realität, also der Business-Logik, sowas wie oben bechrieben.
Wenn Du von einem Objeklt erbst, hast Du da keine Schnittstelle mehr zwischen, und damit hast Du wieder das alte Problem wie bei der prozeduralen Programmierung.
Daraus folgt: Die Gestaltung der Klassen muß sich gerade bei PHP primär an den Möglichkeiten der Sprache orientieren.
Hm, meine Auffassung ist, dass sich die Gestaltung der Klassen an den Objekten der Realität orientiert.
Du kannst auch in anderen Sprachen keine Objekte "zusammenfassen". Du kannst zwar Packages bilden..., aber das hat hiermit wenig zu tun. Ein Grunsatz der OOP ist ja gerade die Kapselung der Funktionalitäten und die Kommunikation über wohl definierte Schnittstellen. So kann man einzelnde Methoden grundlegend verändern, und hat dabei keine Auswirkungen im Rest der Applikation zu befürchten.
Viele Grüße
Andreas