::

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 .

 
class

 
A

 
{

 
function

 
example(

 
)

 
    {

 
echo

 
"I

 
am

 
the

 
original

 
function

 
A::example()

 
.

 
br

 
\n"

 
;

 
    }

 
}

 
class

 
B

 
extends

 
A

 
{

 
function

 
example(

 
)

 
    {

 
echo

 
"I

 
am

 
the

 
redefined

 
function

 
B::example()

 
.

 
br

 
\n"

 
;

 
A::example()

 
;

 
    }

 
}

 
/

 
/

 
Es

 
gibt

 
kein

 
Objekt

 
der

 
Klasse

 
A

 
.

 
/

 
/

 
Dies

 
wird

 
folgendes

 
ausgeben

 
/

 
/

 
I

 
am

 
the

 
original

 
function

 
A::example()

 
.

 
br

 
A::example()

 
;

 
/

 
/

 
Erstellt

 
ein

 
Objekt

 
der

 
Klasse

 
B

 
.

 
$b

 
=

 
new

 
B

 
;

 
/

 
/

 
Dies

 
wird

 
folgendes

 
ausgeben

 
/

 
/

 
I

 
am

 
the

 
redefined

 
function

 
B::example()

 
.

 
br

 
/

 
/

 
I

 
am

 
the

 
original

 
function

 
A::example()

 
.

 
br

 
$b

 
-

 
example()

 
;



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 .