Analyse des Destruktors __destruct und des Garbage-Collection-Mechanismus in PHP

黄舟
Freigeben: 2023-03-12 10:48:02
Original
2397 Leute haben es durchsucht

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 &#39;析构函数现在执行了 <br />&#39;;
		echo &#39;这里一般用来设置、关闭数据库、关闭文件等收尾工作&#39;;
	}}$p = new Person();for($i = 0; $i < 5; $i++){
	echo "$i <br />";}
	?>
Nach dem Login kopieren

Ergebnis der Programmausführung:

0 1 2 3 4 析构函数现在执行了 
这里一般用来设置、关闭数据库、关闭文件等收尾工作
Nach dem Login kopieren

Wenn nicht auf das Objekt gezeigt wird, wird das Objekt zerstört.

<?php
class Person {
	public function destruct(){
		echo &#39;析构函数现在执行了 <br />&#39;;
	}
}

$p = new Person();
$p = null; // 析构函数在这里执行了
$p = "abc"; // 一样的效果
for($i = 0; $i < 5; $i++){
	echo "$i <br />";
}
?>
Nach dem Login kopieren

Ergebnis der Programmausführung:

析构函数现在执行了 
0 
1 
2 
3 
4
Nach dem Login kopieren
Im obigen Beispiel setzen wir $p auf leer oder weisen $p eine Zeichenfolge zu , sodass das Objekt, auf das $p zeigt, zu einem Müllobjekt wird. PHP-Müll zerstört dieses Objekt.

PHP-Unset-Variable
<?php
class Person {
	public function destruct(){
		echo &#39;析构函数现在执行了 <br />&#39;;
	}
}

$p = new Person();
$p1 = $p;

unset($p);
echo &#39;现在把 $p 被销毁了,对象是否也被销毁了呢? <br />&#39;;

for($i = 0; $i < 5; $i++){
	echo "$i <br />";
}

echo &#39;现在再把 $p1 也销毁掉,即已经没有指向对象的变量了<br />&#39;;
unset($p1); // 现在没有指向对象的变量了,析构函数在这里执行了
?>
Nach dem Login kopieren

Ergebnis der Programmausführung:

现在把 $p 被销毁了,对象是否也被销毁了呢?
0 
1 
2 
3 
4 
现在再把 $p1 也销毁掉,即已经没有指向对象的变量了
析构函数现在执行了
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage