Konstruktoren
Achtung
|
In
PHP
3
und
PHP
4
verhalten
sich
die
Konstruktoren
unterschiedlich
.
Die
PHP
4
Semantik
wird
dringend
empfohlen
.
|
Konstruktoren
sind
Funktionen
innerhalb
einer
Klasse
,
die
automatisch
aufgerufen
wird
,
sobald
Sie
mittels
new
eine
neue
Instanz
erstellen
.
In
PHP
3
wird
eine
Funktion
zum
Konstruktor
,
wenn
sie
den
gleichen
Namen
wie
die
Klasse
hat
.
In
PHP
4
wird
eine
Funktion
zum
Konstruktor
,
wenn
sie
den
gleichen
Namen
wie
die
Klasse
hat
,
in
der
sie
definiert
ist
.
Der
Unterschied
ist
subtil
,
aber
entscheidend
(
siehe
unten
)
.
Die
Klasse
Auto_Cart
entspricht
der
Klasse
Cart
und
hat
einen
Konstruktor
,
der
Cart
bereits
mit
einem
Artikel
der
Nummer
"
10
"
initialisiert
,
sobald
ein
neuer
Auto_Cart
mittels
"new
"
erstellt
wird
.
Konstruktoren
können
Argumente
übernehmen
,
die
optional
sein
können
,
was
sie
sehr
praktisch
macht
.
Um
eine
Klasse
auch
ohne
Parameter
verwenden
zu
können
,
sollten
alle
Parameter
für
Konstruktoren
optional
sein
,
indem
sie
mit
Standardwerten
ausgestattet
werden
.
Sie
können
auch
den
Operator
@
verwenden
,
um
Fehlermeldungen
innerhalb
des
Konstruktors
zu
unterdrücken
,
z.B
.
@new
.
Achtung
|
In
PHP
3
haben
abgeleitete
Klassen
und
Konstruktoren
ein
paar
Einschränkungen
.
Sie
sollten
das
folgende
Beispiel
sorgfältig
lesen
,
um
diese
Einschränkungen
zu
verstehen
.
|
In
PHP
3
wird
bei
dem
obigen
Beispiel
kein
Konstruktor
aufgerufen
.
Die
Regel
in
PHP
3
besagt
:
'
Ein
Konstruktor
ist
eine
Funktion
mit
dem
selben
Namen
wie
die
Klasse
'
.
Der
Name
der
Klasse
ist
B
,
und
nachdem
in
Klasse
B
keine
Funktion
namens
B(
)
existiert
,
passiert
nichts
.
Dies
ist
in
PHP
4
mit
der
Einführung
einer
anderen
Regel
behoben
:
Wenn
eine
Klasse
keinen
Konstruktor
hat
,
wird
der
Konstruktor
der
Basisklasse
aufgerufen
,
so
dieser
existiert
.
Das
obige
Beispiel
hätte
in
PHP
4
also
'
I
am
the
constructor
of
A
.
br
'
ausgegeben
.
In
PHP
3
wird
die
Funktion
B(
)
in
der
Klasse
A
plötzlich
zum
Konstruktor
in
Klasse
B
,
auch
wenn
dies
nie
beabsichtigt
war
.
Die
Regel
in
PHP
3
lautet
:
'
Ein
Konstruktor
ist
eine
Funktion
mit
dem
gleichen
Namen
wie
die
Klasse
'
.
PHP
3
kümmert
sich
nicht
darum
,
ob
die
Funktion
in
Klasse
B
definiert
,
oder
ob
sie
nur
vererbt
wurde
.
Dies
ist
in
PHP
4
mit
einer
modifizierten
Regel
behoben
:
'
Ein
Konstruktor
ist
eine
Funktion
mit
dem
selben
Namen
wie
die
Klasse
,
in
der
sie
definiert
wurde
'
.
So
hätte
die
Klasse
B
in
dem
obigen
Beispiel
keinen
eigenen
Konstruktor
,
und
würde
der
Konstruktor
der
Basisklasse
aufgerufen
,
welcher
'
I
am
the
constructor
of
A
.
br
'
ausgeben
würde
.
Achtung
|
Weder
PHP
3
,
noch
PHP
4
rufen
vom
Konstruktor
der
abgeleiteten
Klasse
aus
automatisch
Konstruktoren
der
Basisklasse
auf
.
Wenn
angebracht
,
ist
der
Aufruf
von
Konstruktoren
aufwärts
Ihre
Aufgabe
.
|
Anmerkung
:
In
PHP
3
und
PHP
4
gibt
es
keine
Destruktoren
.
Stattdessen
können
Sie
register_shutdown_function(
)
verwenden
,
um
die
meisten
Effekte
von
Destruktoren
zu
simulieren
.
Destruktoren
sind
Funktionen
die
automatisch
aufgerufen
werden
,
wenn
ein
Objekt
entweder
mittels
unset(
)
,
oder
durch
Verlassen
des
Gültigkeitsbereiches
zerstört
wird
.
Es
gibt
in
PHP
keine
Destruktoren
.