Heim  >  Artikel  >  Backend-Entwicklung  >  Richtiges Verständnis des PHP-Destruktors

Richtiges Verständnis des PHP-Destruktors

黄舟
黄舟Original
2017-07-02 10:10:371265Durchsuche

Wenn Sie eine Funktion mit dem Namen Konstrukt deklarieren, wird diese Funktion als Konstruktor behandelt und beim Erstellen einer Objektinstanz ausgeführt. Zur Klarstellung gibt es zwei Unterstriche Eine andere Funktion, ein Konstruktor, kann Parameter oder Standardwerte haben. 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 Funktion namens „destruct“ definieren, die PHP vor dem aufruft Objekt wird zerstört. Es heißt PHPDestruktor.

Vererbung ist eine leistungsstarke Funktion von Klassen. Eine Klasse (untergeordnete Klasse/abgeleitete Klasse) kann die Funktionen einer anderen Klasse (übergeordnete Klasse/abgeleitete Klasse) erben. Die abgeleitete Klasse enthält alle Attribute und Methoden der Basisklasse und kann der abgeleiteten Klasse auch andere Attribute und Methoden hinzufügen . Wie in 3.1.2 gezeigt, können Sie eine Klasse mit dem Schlüsselwort „extens“ erben.

Sie fragen sich vielleicht, wie Konstruktoren vererbt werden. Wenn sie zusammen mit anderen Methoden vererbt werden, werden sie nicht ausgeführt, wenn Erstellen des Objekts.
Wenn Sie diese Funktionalität benötigen, müssen Sie den in Kapitel 2 erwähnten Operator :: verwenden. Er ermöglicht es Ihnen, auf einen übergeordneten Namensraum zu verweisen Namespace, und Sie können parent::construct verwenden, um den Konstruktor der übergeordneten Klasse aufzurufen.

Einige objektorientierte Sprachen nach Klassen. Dasselbe galt für frühere Versionen von PHP und diese Methode Das heißt: Wenn Sie eine Klasse „Animal“ nennen und darin eine Methode namens „Animal“ erstellen, dann ist diese Methode der Konstruktor. Wenn eine Klasse sowohl einen Konstruktor als auch eine Funktion mit demselben Namen wie die Klasse hat, PHP behandelt Konstrukt als Konstruktor. Dadurch können in früheren PHP-Versionen geschriebene Klassen weiterhin verwendet werden. Neue Skripte (PHP5) sollten jedoch Konstrukt verwenden.

Die neue Methode von PHP zur Deklaration eines Konstruktors ermöglicht es dem Konstruktor, einen eindeutigen Wert zu haben Name, egal wie der Name der Klasse lautet. Auf diese Weise müssen Sie den Namen des Konstruktors nicht ändern, wenn Sie ihn ändern.

Sie können angeben Der Konstruktor in PHP ist eine Zugriffsmethode wie andere Klassenmethoden. Die Zugriffsmethode beeinflusst die Fähigkeit, Objekte aus einem bestimmten Bereich zu instanziieren. Dies ermöglicht die Implementierung einiger fester Designmuster

PHP-Destruktoren rufen sie im Gegensatz zu Konstruktoren auf, um ein Objekt aus dem Speicher zu löschen. Standardmäßig gibt PHP nur den von den Eigenschaften belegten Speicher frei und zerstört die mit dem Objekt verbundenen Ressourcen Code zum Löschen des Speichers nach der Verwendung eines Objekts.

Wenn PHP entscheidet, dass Ihr Skript nicht mehr mit dem Objekt zusammenhängt, analysiert PHP. Der Konstruktor wird innerhalb des Namensraums einer Funktion aufgerufen. Dies geschieht, wenn die Funktion For zurückgibt Globale Variablen, dies geschieht am Ende des Skripts. Wenn Sie ein Objekt explizit zerstören möchten, können Sie der Variablen einen beliebigen anderen Wert zuweisen oder unset aufrufen >

Zählen Sie im folgenden Beispiel die Anzahl der von der Klasse instanziierten Objekte. Die Counter-Klasse beginnt mit der Inkrementierung vom Konstruktor, in PHP wird der Destruktor abgewertet.

Sobald Sie eine Klasse definiert haben, können Sie new verwenden Um eine Instanz dieser Klasse zu erstellen, ist die Instanz die auf der Montagelinie platzierte Komponente. Erfordert den Namen der Klasse und gibt eine Instanz der Klasse zurück , Sie sollten die Parameter nach neu eingeben.

Wenn Sie eine neue PHP-Destruktorinstanz erstellen, wird der Speicher für die Speicherung aller Eigenschaften vorbereitet. Die Methoden sind jedoch vorhanden von allen Instanzen der Klasse geteilt.
< ?php   
class Counter { private static $count = 0;   
function construct() { self::$count++; }   
function destruct() { self::$count--; }   
function getCount() { return self::$count; } }   
//建立第一个实例  
$c = new Counter();  
 //输出1   
print($c->getCount() . "<br>\n");   
//建立第二个实例   
$c2 = new Counter();   
//输出2   
print($c->getCount() . "<br>\n");   
//销毁实例   
$c2 = NULL;   
//输出1  
 print($c->getCount() . "<br>\n");   
?>

Das obige ist der detaillierte Inhalt vonRichtiges Verständnis des PHP-Destruktors. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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