Statische Deklarationen

Während normale Klassenvariablen bei jeder Objekterzeugung für das Objekt spezifisch neu angelegt werden, existieren auch statische Variablen innerhalb von Klassen, die nur einmal im gesamten Programm vorhanden sind. Sie ,,hängen“ sozusagen an der Klasse, statt an dem Objekt.

Neben den statischen Variablen stellt PHP auch statische Funktionen zur Verfügung, die sich innerhalb von Klassen befinden. Den statischen Funktionen ist zu eigen, dass diese nur auf die statischen Variablen und nicht auf die Objektvariablen zugreifen können.

Folgendes Beispiel verdeutlicht das Zusammenspiel von statischen Variablen und statischen Funktionen:

Innerhalb der Klasse Auto wurde eine öffentliche statische Variable namens $anzahl eingefügt, um die sich in diesem Beispiel alles dreht. Dies geschieht, indem static der Variable vorangestellt wird. Wird der Konstruktor aufgerufen, so wird diese Variable mit dem Aufruf self::$anzahl++ um eins erhöht, es wird also mitgezählt wie viele Fahrzeuge erstellt worden sind. Dabei ist self ein Schlüsselwort und bezeichnet die Klasse selbst. Der Zugriff auf die Variable erfolgt nun nicht mehr mit dem Pfeil ->, sondern über einen doppelten Doppelpunkt ::. Gleichermaßen müssen Sie allerdings nicht unbedingt das Schlüsselwort self nutzen, sondern Sie können auch über die Benennung der Klasse (hier: Auto) auf die Variable zugreifen. Außerhalb müssen Sie dies natürlich tun, da self nur innerhalb der Klasse verfügbar ist. Sie sehen dies in der echo-Ausgabe außerhalb der Klasse. Auch statische Funktionen werden mit dem Wort static versehen und können dann mit einem doppelten Doppelpunkt :: statt mit einem Pfeil ->, wie ihn die normalen Objektfunktionen nutzen, aufgerufen werden.

Die Ausgabe des kleinen Testprogrammes ist nun zweimal Es wurden 2 Fahrzeuge zugelassen.

Eine Klassenkonstante ist eine Variable in einer Klasse, die zur Laufzeit nicht mehr geändert wird. Sie steht also konstant fest. Um Konstanten von Variablen zu trennen, wird in PHP auf das $-Zeichen zu Beginn des Konstantennamens verzichtet. Der Zugriff erfolgt wieder mit einem doppelten Doppelpunkt:

Das Beispiel gibt heute aus.

Diese Definition von Konstanten ist von der Definition von Konstanten in einem nicht-objektorientierten Programm zu unterscheiden. Hier wird mittels define gearbeitet:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert