| Achtung |
Die folgende Beschreibung ist nur für PHP 4 gültig.
|
Manchmal ist es hilfreich, auf Funktionen in Basisklassen bzw.
auf Funktionen in Klassen zuzugreifen, die noch keine Instanzen
haben. Dafür wird der :: Operator verwendet.
Das obige Beispiel ruft die Funktion example() der Klasse A auf.
Nachdem noch kein Objekt der Klasse A existiert, können wir nicht
$a->example() oder ähnliches schreiben. Stattdessen rufen wir
example() als 'Klassenfunktion' auf, d.h. als Funktion der Klasse
selbst, und nicht irgendein Objekt dieser Klasse.
Es gibt Klassenfunktionen, aber keine Klassenvariablen. Tatsächlich
gibt es zur Zeit des Aufrufs kein Objekt. Deshalb darf eine
Klassenfunktion keine Objektvariablen benutzen (aber sie kann lokale
und globale Variablen verwenden), und sie darf $this ebenfalls nicht
benutzen.
In dem obigen Beispiel definiert Klasse B die Funktion example() neu.
Die ursprüngliche Definition in Klasse A ist überschattet und nicht
länger verfügbar, außer Sie verweisen mittels des ::-Operators
speziell auf example() in Klasse A. Schreiben Sie A::example(), um
dies zu tun (Tatsächlich sollten Sie parent::example() schreiben,
wie im nächsten Abschnitt beschrieben).
In diesem Kontext besteht ein Objekt, das Objektvariablen haben
kann. Deshalb können Sie auch $this und Objektvariablen verwenden,
wenn sie von innerhalb einer Objektfunktion verwendet werden.