php析構方法的名稱是“__destruct()”,且不能有任何參數。 「__destruct()」析構方法只有在物件被垃圾收集器收集前(即物件從記憶體中刪除之前)才會被自動呼叫;它允許在銷毀一個物件之前執行一些特定的操作,例如關閉檔案、釋放結果集等。
本教學操作環境:windows7系統、PHP8版、DELL G3電腦
php析構方法的名稱是「__destruct ()”,且不能有任何參數。
PHP __destruct():析構函式/方法
析構函式的作用和建構子剛好相反,析構函數只有在物件被垃圾收集器收集前(即物件從記憶體中刪除之前)才會被自動呼叫。析構函數允許我們在銷毀一個物件之前執行一些特定的操作,例如關閉檔案、釋放結果集等。
在 PHP 中有一個垃圾回收機制,當物件無法被存取時就會自動啟動垃圾回收機制,收回物件佔用的記憶體空間。而析構函數正是在垃圾回收機制回收物件之前所呼叫的。
析構函數的宣告格式與建構子相似,在類別中宣告析構函式的名稱也是固定的,同樣以兩個下畫線開頭的方法名__destruct(),而且析構函數不能帶有任何參數。在類別中宣告析構方法的格式如下:
public function __destruct(){ ... ... }
在PHP 中析構函數並不是很常用,它屬於類別中可選的一部分,只有需要的時候才在類別中聲明。
【範例】下面透過範例來示範析構函數的使用。
<?php class Website{ public $name, $url, $title; public function __construct(){ echo '------这里是构造函数------<br>'; } public function __destruct(){ echo '------这里是析构函数------<br>'; } } $object = new Website(); echo 'PHP中文网<br>'; echo 'https://www.php.cn/<br>'; echo '脚本运行结束之前会调用对象的析构函数<br>'; ?>
運行結果如下:
析構函數會在到某個物件的所有參考都被刪除或當物件被明確銷毀時執行
在物件銷毀前執行吧?
依照官方手冊的描述,析構函數會在到某個物件的所有參考都被刪除或當物件被明確銷毀時執行。程式碼示範如下
class sf{ public function destruct() { echo METHOD . PHP_EOL; } } $c1 = new sf; $c2 = $c1;echo 'unset $c2' . PHP_EOL;unset($c2);echo 'unset $c1' . PHP_EOL;unset($c1);// ----$c1 = new sf; $c2 = $c1;echo 'null $c2' . PHP_EOL; $c2 = null;echo 'null $c1' . PHP_EOL; $c1 = null;// ----$c1 = new sf; $c2 = $c1;echo '123 $c2' . PHP_EOL; $c2 = 123;echo '456 $c1' . PHP_EOL; $c1 = 456;echo 'the end' . PHP_EOL;
運行結果如下
析構函數會在到某個物件的所有參考都被刪除或當物件被明確銷毀時執行。
通常來說在腳本結束時(非unset)php才會銷毀引用 在腳本結束運行之前執行。
推薦學習:《PHP影片教學》
以上是php析構方法的名稱是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!