Heim > Artikel > Backend-Entwicklung > Analyse von Destruktorbeispielen simulierter Klassen in PHP4
Ein Projekt, an dem ich kürzlich gearbeitet habe, basierte auf PHP4. Ich bin es gewohnt, mit Objekten in PHP5 konfrontiert zu werden. Bei der Konfrontation mit PHP4 werde ich unweigerlich große Beschwerden haben:
wird nicht unterstützt öffentliche, statische, private, geschützte Schlüsselwörter. Das Deprimierendste ist, dass der Destruktor nicht unterstützt wird:
In diesem Artikel wird PHPs register_shutdown_function verwendet, um den Destruktor von zu simulieren eine Klasse in PHP4 Funktion
Wir registrieren den Destruktor im Konstruktor :
class sample{ var $identified; function sample($iden){ $this->identified = $iden; register_shutdown_function(array(&$this, 'destructor')); //模拟析构函数 } function destructor(){ error_log("destructor executing, Iden is ". $this->identified); unset($this); } } $sample = new sample("laruence"); $sample2 = new sample("HuiXinchen");
Führen Sie dieses Skript aus, Sie werden feststellen, dass der Destruktor des Objekts korrekt aufgerufen wird
Da wir bei der Registrierung der Abschlussfunktion das Schlüsselwort $this verwendet haben, kann der Destruktor auch dann korrekt aufgerufen werden, wenn Ihre Gegenvariable überschrieben wird, z. B.:
class sample{ var $identified; function sample($iden){ $this->identified = $iden; register_shutdown_function(array(&$this, 'destructor')); //模拟析构函数 } function destructor(){ error_log("destructor executing, Iden is ". $this->identified); unset($this); } } $sample = new sample("laruence"); $sample = "laruence"; //覆盖对象变量
$sample wird überschrieben, aber wann Wenn Sie dieses Skript ausführen, werden Sie feststellen, dass der Destruktor immer noch korrekt aufgerufen werden kann:
class sample{ var $identified; function sample($iden){ $this->identified = $iden; register_shutdown_function(array(&$this, 'destructor')); //模拟析构函数 } function destructor(){ error_log("destructor executing, Iden is ". $this->identified); unset($this); } } $sample = new sample("laruence"); unset($sample);
Der Destruktor kann immer noch korrekt aufgerufen werden
Das obige ist der detaillierte Inhalt vonAnalyse von Destruktorbeispielen simulierter Klassen in PHP4. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!