Was ist der Hauptzweck eines Destruktors?Wann Destruktor in PHP zu verwenden?
Können Sie Beispiele geben, was ich beim Löschen eines Objekts ausführen möchte?
Was ist der Hauptzweck eines Destruktors?Wann Destruktor in PHP zu verwenden?
Können Sie Beispiele geben, was ich beim Löschen eines Objekts ausführen möchte?
Es gibt dem Objekt eine Gelegenheit, sich darauf vorzubereiten, getötet zu werden. Dies könnte manuelle Bereinigung, Statuspersistenz usw. bedeuten.
Zum Beispiel möchte ein Modell möglicherweise alle seine aktuellen Eigenschaften in die Datenbank zurückspeichern.
Oder ein Datenbankobjekt selbst möchte möglicherweise den Socket schließen, den es zur Kommunikation mit einem Datenbankserver verwendet.
Angenommen, ich habe eine Result
Klasse, die ein Wrapper ist (Implementierung Iterator, neben anderen Feinheiten) für die mysqli_result Objekt. Wenn ich eines meiner Result
Objekte zerstöre, möchte ich sicher sein, die free()
Methode auf dem mysqli_result
Objekt zu rufen, um den Speicher zurückzuerhalten, den es verwendete. Also mache ich das im Destruktor meiner Result
Klasse.
So wissen Sie wahrscheinlich, was ein Konstruktor tut. Wenn ein Konstruktor eingerichtet wird, räumt ein Destruktor auf. Hier ist ein Beispiel aus der PHP-Website:
<?php
class my_class {
public $error_reporting = false;
function __construct($error_reporting = false) {
$this->error_reporting = $error_reporting;
}
function __destruct() {
if($this->error_reporting === true) $this->show_report();
unset($this->error_reporting);
}
?>
Here's the link mit der PHP-Dokumentation zu diesem Thema.
Warum es muss sogar alles entfernen. Wenn das Objekt zerstört wird, werden die Referenzen ebenfalls zerstört, und wenn es keine Referenz mehr gibt, dann haben Objekte, von denen es abhängt, keine Referenz, so dass die Destruktoren dieser Abhängigkeiten aufgerufen werden. – Hafiz
- Es ist auch für die Reinigung: D – Hanseh
Auch etwas zu beachten, __destruct wird nicht nur mit einem Objekt aufgerufen wird gelöscht, sondern auch wenn ein Objekt außerhalb des Bereichs fällt, sowie wenn das Skript endet – deadkarma