Heim  >  Artikel  >  php教程  >  Konstruktor und Destruktor

Konstruktor und Destruktor

黄舟
黄舟Original
2016-12-14 11:10:121213Durchsuche

Wenn Sie eine Funktion in einer Klasse deklarieren und sie __construct nennen, wird diese Funktion als Konstruktor behandelt und beim Erstellen einer Objektinstanz ausgeführt. Um es klarzustellen: __ ist wie jede andere Funktion auch ein Konstruktor Sie können eine Klasse definieren, um ein Objekt zu erstellen und alle seine Eigenschaften in eine Anweisung einzufügen.

Sie können auch eine Klasse mit dem Namen __destruct function definieren. PHP ruft diese Funktion auf, bevor das Objekt zerstört wird . Es wird als Destruktor bezeichnet.

Die Fortsetzung einer Klasse (Unterklasse/abgeleitete Klasse) kann alle Funktionen der Klasse (übergeordnete Klasse/Basisklasse) enthalten die Eigenschaften und Methoden der Basisklasse und können der abgeleiteten Klasse weitere Eigenschaften und Methoden hinzufügen. Sie können die Methoden und Eigenschaften der Basisklasse auch überschreiben. Wie in 3.1.2 gezeigt, können Sie eine Klasse mithilfe der Erweiterungen erweitern Schlüsselwort.
Sie fragen sich möglicherweise, wie Konstruktoren zusammen mit anderen Methoden erweitert werden.
Wenn Sie diese Funktion benötigen, müssen Sie den genannten Operator verwenden in Kapitel 2. Damit können Sie auf einen übergeordneten Namensraum verweisen, den Sie verwenden können parent::__construct Rufen Sie den Konstruktor der übergeordneten Klasse auf der Konstruktor nach der Klasse. Dies war auch in früheren PHP-Versionen der Fall, und diese Methode ist immer noch gültig. Das heißt: Wenn Sie eine Klasse mit dem Namen Animal erstellen, ist diese Methode der Konstruktor Eine Klasse hat sowohl einen __construt-Konstruktor als auch eine Funktion mit demselben Namen wie die Klasse. PHP behandelt __construct als Konstruktor. Dadurch können in früheren PHP-Versionen geschriebene Klassen weiterhin verwendet werden. Neue Skripte (PHP5) sollten jedoch __construct.

Diese neue Art, Konstruktoren in PHP zu deklarieren, ermöglicht es dem Konstruktor, einen eindeutigen Namen zu haben, unabhängig vom Namen der Klasse, in der er sich befindet. Auf diese Weise müssen Sie den Namen des Konstruktors bei einer Änderung nicht ändern Der Name der Klasse.

Sie können dem Konstruktor eine Methode wie andere Klassenmethoden zuweisen. Die Zugriffsmethode beeinflusst die Fähigkeit, Objekte aus einem bestimmten Bereich zu instanziieren Entwurfsmuster wie das Singleton-Muster. Im Gegensatz zu Konstruktoren ruft PHP sie auf. Standardmäßig gibt PHP nur den von den Objekteigenschaften belegten Speicher frei Mit dem Destruktor können Sie beliebigen Code ausführen, um den Speicher nach der Verwendung eines Objekts zu löschen.

Wenn PHP entscheidet, dass Ihr Skript nicht mehr mit dem Objekt verknüpft ist, wird der Destruktor innerhalb einer Funktion aufgerufen Dies geschieht, wenn die Funktion zurückkehrt. Wenn Sie ein Objekt explizit zerstören möchten, können Sie der Variablen, die auf das Objekt zeigt, einen beliebigen anderen Wert zuweisen Rufen Sie unset auf.

Im folgenden Beispiel wird die Berechnung von der Klasse aus instanziiert. Die Anzahl der Objekte beginnt vom Konstruktor aus zu erhöhen und vom Destruktor zu dekrementieren.

Sobald Sie definiert haben Wenn Sie eine Klasse verwenden, können Sie mit new eine Instanz dieser Klasse erstellen. Die Konstruktionszeichnung und die Instanz sind die auf der Montagelinie platzierten Komponenten. New erfordert den Namen der Klasse und gibt eine Instanz der Klasse zurück . Wenn der Konstruktor Parameter erfordert, sollten Sie die Parameter nach new

class Counter

{

private static $count = 0;

eingeben
function __construct()
{
self::$count ;
}

function __destruct()
{
self::$count--;
}

function getCount()
{
return self:: $count;
}

}


//Erstelle die erste Instanz
$c = new Counter();

//Ausgabe 1

print( $c->getCount() . "
n");


//Erstellen eine zweite Instanz

$c2 = new Counter();


// Ausgabe 2

print($c->getCount() . "
n");


//Zerstöre die Instanz

$c2 = NULL;


/ /Ausgabe 1

print($c->getCount() . "
n");

?>
Wenn Sie eine neue Instanz erstellen, wird der Speicher für die Speicherung aller Attribute vorbereitet. Jede Instanz verfügt über einen eigenen, einzigartigen Satz von Eigenschaften. Methoden werden jedoch von allen Instanzen der Klasse gemeinsam genutzt.

Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn