Suchen

Programmieren mit PHP, Teil 5 Vererbung und weitere objektorientierte Mechanismen

| Autor / Redakteur: Thomas Joos / Stephan Augsten

Dank objektorientierter Programmierung in PHP können Klassen ihre Eigenschaften, Methoden und andere Bereiche weitervererben. Die dadurch entstehenden Hierarchien bieten viele Möglichkeiten zur effektiven Programmierung.

Firma zum Thema

Das Vererben verschiedener Eigenschaften und Methoden an andere Klassen kann viel Programmieraufwand sparen.
Das Vererben verschiedener Eigenschaften und Methoden an andere Klassen kann viel Programmieraufwand sparen.
(Bild: alekseynemiro - Pixabay.com)

Durch das Entstehen von Hierarchien über das Vererben von Eigenschaften und Methoden zwischen verschiedenen Klassen, lassen sich viele sinnvolle Aufgaben erfüllen. So ist über die Vererbung zum Beispiel das Weitergeben von Berechtigungen innerhalb von Anwendungen, die auf Basis von PHP entstanden sind.

Einfach ausgedrückt, werden durch Vererbung Oberklassen und Unterklassen erschaffen, oder übergeordnete Klassen und untergeordnete Klassen. Die dadurch entstehenden Hierarchien ermöglichen die Weitergabe von Eigenschaften, Methoden und Funktionen.

Extends in der Vererbung nutzen

Durch die Verwendung des Schlüsselwortes „extends“ kann eine Klasse in PHP mit einer anderen Klasse verknüpft werden. Durch diese Verknüpfung können Eigenschaften und Methoden, die in der verknüpften Klasse definiert sind, auch in der anderen Klasse verwendet werden. Ein Beispiel für diese Erweiterung ist

Class tv extends multimedia

Durch diesen Befehl wird die Klasse „tv“ mit der Klasse „multimedia“ verknüpft. Die Klasse „tv“ kann durch die Erweiterung mit der Klasse „multimedia“ auf alle definierten Methoden und Eigenschaften zugreifen, die bereits in „multimedia“ gesetzt sind. Dadurch ersparen sich Entwickler das doppelte Definieren von Eigenschaften und Methoden.

Innerhalb der Klasse, die Eigenschaften und Methoden von der übergeordneten Klasse vererbt, können die Funktionen und Methoden genutzt werden, in dem mit „. parent“ und einem Operator gearbeitet wird, zum Beispiel:

. Parent::<Methode oder Funktion>

An dieser Stelle kann aber auch direkt die übergeordnete Klasse angesprochen werden, sondern mit dem Namen der Klasse, auch direkt die jeweilige Klasse.

Überschreiben von Methoden und Eigenschaften

Natürlich ist es trotz der Vererbung von Funktionen, Eigenschaften und Methoden möglich, dass untergeordnete Klassen Daten von übergeordneten Klassen für ihren Bereich überschreiben können. Sinnvoll ist das zum Beispiel für einen Online-Shop, wenn für verschiedene Produktkategorien Mengenrabatt eingeräumt wird, der sich zwischen den Kategorien unterscheidet.

Wird in einer solchen Struktur eine übergeordnete Klasse erstellt, zum Beispiel für alle Produkte in einem Online-Shop, kann hier eine Methode „mengenrabatt“ erstellt werden. Diese Methode kann jetzt in untergeordneten Klassen überschrieben werden, in dem der jeweilige Mengenrabatt verwendet wird. Das ermöglicht die Verwendung von unterschiedlichen Mengenrabatten in verschiedenen Produktkategorien, wie den unten erwähnten Online-Shop am Beispiel von Amazon.

Methoden in der Vererbung sichern

Durch die Verknüpfung von Klassen über die Vererbung, kann es passieren, dass untergeordnete Klassen Methoden oder andere Bereiche der übergeordneten Klasse überschreiben. Das kann in PHP über verschiedene Möglichkeiten verhindert werden. Eine davon ist das Schlüsselwort „final“.

Die Methode in der übergeordneten Klasse beginnt dann einfach mit dem Schlüsselwort „final“. Das verhindert, dass Ausgaben, Daten oder andere Bereiche aus der übergeordneten Klassen von der untergeordneten Klasse so überschrieben werden, dass bei Ausgaben der untergeordneten Klasse Werte erscheinen, die in der untergeordneten Klasse entstanden sind.

Generell verwendet eine Klasse immer die aktuellste Definition der Funktion, auch wenn diese von einer übergeordneten Klasse stammt. Wird für eine untergeordnete Klasse in der Hierarchie keine neue Definition des Mengenrabatts vorgenommen, übernimmt PHP die Definition der übergeordneten Klasse.

Sinnvoller Einsatz der Vererbung

Die Vererbung ist vor allem dann sinnvoll, wenn in einer PHP-Awendung Klassen erstellt werden, die zu einem großen Teil identische Methoden und Funktionen nutzen. Ein Beispiel wäre ein Online-Shop, wie Amazon, der zum Beispiel Bücher, DVDs, BluRays und Musik-CDs verkauft.

Würde man für jede dieser Produktbereiche eine Klasse anlegen, dann brauchen die Klasse verschiedene Funktionen für das Festlegen des Namens, der vorhandenen Stückzahl, des Preises und vieler anderer Eigenschaften. Hier würde also ein sehr großer Programm-Code entstehen, mit vielen redundanten Bereichen. Durch das Festlegen der Vererbung lassen sich viele dieser identischen Funktionen in einer übergeordneten Klasse erstellen und dann nach unten weitervererben.

Der Vorteil besteht auch darin, dass bei notwendigen Änderungen von Funktionen, zum Beispiel des Festlegens eines Mengenrabatts, nur eine Änderung in der übergeordneten Funktion durchgeführt werden muss. Diese wird dann nach unten vererbt. Ohne diese Vererbung müsste der Mengenrabatt in allen Produktkategorien eingepflegt werden.

In einer PHP-Anwendung ist es daher sinnvoll zu planen, ob eine übergeordnete Klasse erstellt werden soll. Diese Klasse hat die Aufgabe die Methoden, Funktionen und Eigenschaften zu speichern, die an die eigentlich relevanten Unterklassen weitergegeben werden sollen.

Fazit

Die Vererbung ist eine effektive Konstruktion, um Programmcode relativ kurz zu halten, da nicht zu viele und komplizierte Methoden, Funktionen und Eigenschaften in den einzelnen Unterklassen definiert werden müssen. Auf der anderen Seite wird ein Programmcode natürlich komplizierter, wenn es eine Hierarchie zwischen verschiedenen übergeordneten und untergeordneten Klassen gibt. Es ist daher sinnvoll genau zu planen welche Klassen es geben soll, welche Klassen Methoden, Funktionen und Eigenschaften erben sollen und wie das Überschreiben von Methoden und Funktionen gesteuert wird.

(ID:45633512)

Über den Autor

 Thomas Joos

Thomas Joos

Freiberuflicher Autor und Journalist