| |
| * Link führt ins Internet |
|
| |
Mehrfachvererbung durch Aggregation
|
|
Innerhalb von PHP stellte man oftmals die Notwendigkeit fest, Klassen zu erweitern oder anzupassen. Was, wie Sie bereits erfarhen haben auch als Vererbung bezeichnet wird. Beim ursprünglichen Objekt, von dem geerbt wurde, spricht man nun von einer Ober- oder Superklasse. Eine aus der Sprache C++ bekannte Methode erlaubt es, dass eine abgeleitete oder geerbte Klasse mehrere Basisklassen besitzen kann. Dabei handelt es sich um die Möglichkeit, parallel, also gleichzeitig, von zwei Klasseneigenschaften zu erben. In diesem Zusammenhang wird dann oftmals von Mehrfachvererbung (multiple inheritance) gesprochen. Eine allgemeine akzeptierte Lösung bildete die Aggregations-Methode, die ebenfalls eine Mehrfachvererbung von Klassen durch Zusammenführen der Eigenschaften und Methoden zur Laufzeit ermöglicht.
Mit den Aggregationsfunktionen lässt sich die Mehrfachvererbung von Klassen durch Zusammenführen der Eigenschaften und Methoden von Objekten zur Laufzeit wie folgt erreichen:
<?php
class ErsteKlasse {
function ausgabe_a() {
print "ErsteKlasse::ausgabe_a() aufgerufen.<br>";
}
}
class ZweiteKlasse {
function ausgabe_b() {
print "ZweiteKlasse::ausgabe_a() aufgerufen.<br>";
}
}
$objekt = new ErsteKlasse();
aggregate($objekt, 'ZweiteKlasse');
$objekt->ausgabe_a();
$objekt->ausgabe_b();
?>
|
Ausgabe
ErsteKlasse::ausgabe_a() aufgerufen.
ZweiteKlasse::ausgabe_a() aufgerufen.
|
Neben der aggregate()-Funktion, die sämtliche Eigenschaften und Methoden der Klassen in einer Objektinstanz zusammenführt, besteht mit den Funktionen:
. aggregate_properties()
. aggregate_properties_by_list()
. aggregate_properties_by_regex() bzw. aggregate_methods()
. aggregate_methods_by_list()
. aggregate_methods_by_regex()
die Möglichkeit, die zu vereinigenden Eigenschaften bzw. Methoden auszuwählen.
| Achtung: Die Aggregation-Funktion ist in PHP 4.2 eingeführt worden und als experimentell zu bezeichnen. Die Implementierung der Aggregation-Funktion fügt sich daher nicht nahtlos in das übrige OOP Konzept von PHP ein. Funktionen wie beispielsweise get_class() oder is_a() können kein korrektes Ergebnis liefern, wenn sie auf ein aggregiertes Objekt angewandt werden. |
|
|
|
|
|
|
|