Destruktor
Wird ausgeführt, wenn ein Objekt zu Müll wird oder wenn das Objekt explizit zerstört wird.
Der in PHP5 bereitgestellte Destruktor ist „destruct“, der der Konstruktormethodeconstruct entspricht.
Garbage Collection – GC (Garbage Collector)
Wenn in PHP keine Variable auf dieses Objekt verweist, wird das Objekt zu Müll und PHP zerstört es im Speicher.
Dies ist der GC-Müllentsorgungsmechanismus (Garbage Collector) von PHP, der einen Speicherüberlauf verhindern kann.
Wenn ein PHP-Thread endet, wird der gesamte aktuell belegte Speicherplatz zerstört und alle Objekte im aktuellen Programm werden ebenfalls zerstört.
destruct() Destruktor wird ausgeführt, wenn das Müllobjekt recycelt wird.
Der Destruktor wird automatisch vom System aufgerufen und kann auch explizit aufgerufen werden, tun Sie dies jedoch nicht.
Wie im folgenden Programm gezeigt, werden alle Objekte zerstört, bevor das Programm endet. Der Destruktor wurde aufgerufen.
<?php class Person { public function destruct(){ echo '析构函数现在执行了 <br />'; echo '这里一般用来设置、关闭数据库、关闭文件等收尾工作'; }}$p = new Person();for($i = 0; $i < 5; $i++){ echo "$i <br />";} ?>
Ergebnis der Programmausführung:
0 1 2 3 4 析构函数现在执行了 这里一般用来设置、关闭数据库、关闭文件等收尾工作
Wenn nicht auf das Objekt gezeigt wird, wird das Objekt zerstört.
<?php class Person { public function destruct(){ echo '析构函数现在执行了 <br />'; } } $p = new Person(); $p = null; // 析构函数在这里执行了 $p = "abc"; // 一样的效果 for($i = 0; $i < 5; $i++){ echo "$i <br />"; } ?>
Ergebnis der Programmausführung: 析构函数现在执行了
0
1
2
3
4
PHP-Unset-Variable<?php
class Person {
public function destruct(){
echo '析构函数现在执行了 <br />';
}
}
$p = new Person();
$p1 = $p;
unset($p);
echo '现在把 $p 被销毁了,对象是否也被销毁了呢? <br />';
for($i = 0; $i < 5; $i++){
echo "$i <br />";
}
echo '现在再把 $p1 也销毁掉,即已经没有指向对象的变量了<br />';
unset($p1); // 现在没有指向对象的变量了,析构函数在这里执行了
?>
Ergebnis der Programmausführung:
现在把 $p 被销毁了,对象是否也被销毁了呢? 0 1 2 3 4 现在再把 $p1 也销毁掉,即已经没有指向对象的变量了 析构函数现在执行了
Unset zerstört die Variable, die auf das Objekt zeigt, und Nicht dieses Objekt.
Das obige ist der detaillierte Inhalt vonAnalyse des Destruktors __destruct und des Garbage-Collection-Mechanismus in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!