Teil von  SELFPHP   Teil von  Praxisbuch  Teil von  PHP und OOP
Letztes Update: 16.08.2005 17:53:45


Navigation

Seite News *

Seite Startseite
Seite Über SELFPHP
Seite Werbung
Seite Kontakt
Seite Forum *
Seite Download *
Seite SELFPHP Banner *
Seite SELFPHP in Buchform
Seite Newsletter *
Seite Impressum

 
* 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.



 


Optimierung durch parent
 






© 2001-2005 E-Mail SELFPHP - Damir Enseleit, info@selfphp.deImpressumKontakt
© 2005 E-Mail PHP5 Praxisbuch - Matthias Kannengiesser, m.kannengiesser@selfphp.de