析構函數何時被呼叫
#析構函數在下邊3種情況時被呼叫:
物件生命週期結束,被銷毀時;
主動呼叫delete ;(推薦學習:PHP程式設計從入門到精通)
物件i是對象o的成員,o的析構函數被呼叫時,對象i的析構函數也被呼叫。
PHP 5 引入了析構函數的概念,這類似於其它物件導向的語言,如 C 。析構函數會在到某個物件的所有參考都被刪除或當物件被明確銷毀時執行。
<?php class MyDestructableClass { function __construct() { print "In constructor\n"; $this->name = "MyDestructableClass"; } function __destruct() { print "Destroying " . $this->name . "\n"; } } $obj = new MyDestructableClass(); ?>
和建構子一樣,父類別的析構函式不會被引擎暗中呼叫。要執行父類別的析構函數,必須在子類別的析構函數體中明確地呼叫 parent::__destruct()。另外也和建構子一樣,子類別如果自己沒有定義析構函式則會繼承父類別的。
析構函數即使在使用 exit() 終止腳本執行時也會被呼叫。在析構函數中呼叫 exit() 將會中止其餘關閉作業的運作。
Note:
析構函數在腳本關閉時調用,此時所有的 HTTP 頭資訊已經發出。腳本關閉時的工作目錄有可能和在 SAPI(如 apache)中時不同。
Note:
試圖在析構函數(在腳本終止時被呼叫)中拋出一個例外會導致致命錯誤。
以上是php析構函數什麼時候調用的詳細內容。更多資訊請關注PHP中文網其他相關文章!