PHP中銷毀對象的方法:1、給對象變量賦值NULL,語法“$obj = null;”;2、使用unset()函數(shù)銷毀對象,語法“unset($obj);”。
本教程操作環(huán)境:windows7系統(tǒng)、PHP7.1版,DELL G3電腦
PHP中銷毀對象的方法
方法1:給對象變量賦值NULL
當(dāng)對象沒有被引用時就會被銷毀,因此可以為其賦值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); ?>
輸出結(jié)果:
給對象變量$obj賦值NULL,銷毀對象
$obj = null; var_dump($obj);
輸出結(jié)果:
方法2:使用unset()函數(shù)銷毀對象
示例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 />'; //先輸出換行線再輸出走了 析構(gòu)函數(shù)是在線上觸發(fā)還是線下觸發(fā)? ?>
答案:
$b = $c = $d = $a;
默認(rèn)引用傳值,四個變量指向同一處內(nèi)存,unset的時候?qū)ο筮€是被其它三個變量使用,所以對象并沒有被銷毀,所以析構(gòu)函數(shù)是在線下觸發(fā)的(代碼執(zhí)行完了,內(nèi)存自動釋放)
示例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 />'; //同樣的問題: 析構(gòu)函數(shù)是在線上觸發(fā)還是線下觸發(fā)? ?>
在代碼運(yùn)行完自動釋放內(nèi)存之前由于對象已經(jīng)沒有被任何變量引用所以就自動釋放了內(nèi)存….答案是在線上觸發(fā)
推薦學(xué)習(xí):《PHP視頻教程》