|
Konstruktoren und DestruktorenKonstruktor
void __construct
([ mixed
$args = ""
[, $...
]] )PHP 5 erlaubt es Entwicklern, Konstruktormethoden für Klassen zu deklarieren. Klassen mit Konstruktormethoden rufen diese für jedes neu erzeugte Objekt auf, so dass Konstruktoren für alle Initialisierungen passend sind, die das Objekt brauchen könnte bevor es benutzt wird.
Beispiel #1 Die neuen, vereinheitlichten Konstruktoren verwenden
<?phpAus Gründen der Abwärtskompatibilität sucht PHP 5, falls die Klasse keine __construct() Methode besitzt, und die Klasse keine von einer Elternklasse geerbt hat, nach einem Konstruktur des alten Stils, d.h. einer Methode mit dem selben Namen wie die Klasse. Der einzige Fall in dem somit Kompatibilitätsprobleme auftreten können, ist wenn die Klasse eine Methode __construct() definiert, welche jedoch für andere Zwecke benutzt wird.
Im Gegensatz zu anderen Methoden, generiert PHP keinen Seit PHP 5.3.3 werden Methoden, welche mit dem Klassennamen übereinstimmen, nicht länger als Konstruktoren behandelt, wenn die Klasse sich in einem Namespace befindet. Klassen, welche sich nicht in einem Namespace befinden, betrifft dies jedoch nicht. Beispiel #2 Konstruktoren in Klassen in Namespaces
<?phpDestruktor
void __destruct
( void
)
PHP 5 führt ein Destruktorkonzept ähnlich dem anderer objektorientierter Programmiersprachen wie C++ ein. Die Destruktormethode wird aufgerufen, sobald es keine weiteren Referenzen auf ein bestimmtes Objekt mehr gibt, oder in beliebiger Reihenfolge am Ende des Skripts. Beispiel #3 Destruktor Beispiel
<?phpWie Konstruktoren auch, werden Vaterdestruktoren nicht implizit durch die Engine aufgerufen. Um einen Vaterdestruktor zu benutzen muss man explizit die Funktion parent::__destruct in der Destruktorimplementierung aufrufen. Ebenso wie Konstruktoren kann eine Kindklasse den Destruktor des Vaters erben, falls sie keinen eigenen implementiert. Der Destruktor wird aufgerufen, wenn das Script mittels exit abgebrochen wird. Wenn exit innerhalb eines Destruktors aufgerufen wird, verhindert das die Ausführung von jeglichen weiteren Shutdown Routinen.
|