您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關如何銷毀PHP中的對象,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
PHP中銷毀對象的方法:1、給對象變量賦值NULL,語法“$obj = null;”;2、使用unset()函數銷毀對象,語法“unset($obj);”。
本教程操作環境:windows7系統、PHP7.1版,DELL G3電腦
PHP中銷毀對象的方法
方法1:給對象變量賦值NULL
當對象沒有被引用時就會被銷毀,因此可以為其賦值NULL
示例:有這么一個對象:
<?php header("Content-type:text/html;charset=utf-8"); class Human { public $name = '張三'; public $gender = null; public function __destruct() { echo '走了!<br />'; } } $obj = new Human(); var_dump($obj); ?>
輸出結果:
給對象變量$obj賦值NULL,銷毀對象
$obj = null; var_dump($obj);
輸出結果:
方法2:使用unset()函數銷毀對象
示例1:
<?php class Human { public $name = '張三'; public $gender = null; public function __destruct() { echo '走了!<br />'; } } $a = new Human(); $b = $c = $d = $a; unset($a); echo $b->name; //輸出張三 echo '<hr />'; //先輸出換行線再輸出走了 析構函數是在線上觸發還是線下觸發? ?>
答案:
$b = $c = $d = $a;
默認引用傳值,四個變量指向同一處內存,unset的時候對象還是被其它三個變量使用,所以對象并沒有被銷毀,所以析構函數是在線下觸發的(代碼執行完了,內存自動釋放)
示例2:
<?php class Human { public $name = '張三'; public $gender = null; public function __destruct() { echo '走了!<br />'; } } $e = $f = $g = new Human(); unset($e); unset($f); unset($g); echo '<hr />'; //同樣的問題: 析構函數是在線上觸發還是線下觸發? ?>
在代碼運行完自動釋放內存之前由于對象已經沒有被任何變量引用所以就自動釋放了內存....答案是在線上觸發
看完上述內容,你們對如何銷毀PHP中的對象有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。