析構函數
__destruct ( void ) : void
PHP 5 引入了析構函數的概念,這類似於其它物件導向的語言,如C 。析構函數會在到某個物件的所有參考都被刪除或當物件被明確銷毀時執行。
析構函數會在某個物件的所有參考都被刪除了(不管是明確銷毀還是隱含銷毀)或php檔案執行時執行。
某個物件的所有引用都被刪除:(推薦學習:PHP程式設計從入門到精通)
、使用unset(对象名),将对象名销毁 2、$对象名 = null 3、$对象名 = 'abc'
明確銷毀:
上面寫的三種方式,都是明確銷毀,所謂明確銷毀就是程式設計師主動刪除物件參考。
如果程式設計師不去明確銷毀對象,那麼在程式執行完畢後,這個物件就會被系統銷毀,這個就是系統銷毀。也叫隱式銷毀。
基本語法:
class 类名{ public function __destruct(){ //函数体 //析构函数的重要作用,就是释放对象创建的资源 //比如 数据库连接,文件句柄,绘图句柄。。。 } }
說明:
(1)析構函式都是public
#(2)__destruct是關鍵字,不要修改
(3)析構函數沒有形參
(4)析構函數時系統呼叫的
(5 )析構函數在下列情況會被系統呼叫
php檔案執行完
在某個物件的所有參考都被刪除或是當物件被明確銷毀時執行。
<?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中文網其他相關文章!