程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP基礎知識 >> php析構函數使用詳解教程

php析構函數使用詳解教程

編輯:PHP基礎知識
 

析構函數:當某個對象成為垃圾或者當對象被顯式銷毀時執行。
__destruct() 析構函數,是在垃圾對象被回收時執行。
注意: 1、不要在程序中調用一個對象的析構函數。2、析構函數不能帶有參數。
通常在程序結束後PHP會自動執行垃圾回收,但你想在這個過程中干些什麼就可以用到析構函數了。
看個例子:
<?php
class Bike
{
function __destruct()
{
echo "結束的時候會看到這句話";
}
}
$myBike = new Bike();
for($i=0;$i<5;$i++)
echo $i;
?>
上面的代碼執行後會看到頁面在顯示完0到4的數字後就會出現“結束的時候會看到這句話”。這就說明程序已經結束了。

銷毀已經建立的對象
如果要在執行其他程序前先把某個對象給銷毀,可以使用$對象變量名 = null 的方法。
那麼使用unset($對象變量名)是否可以銷毀對象呢?答案是,unset只能回收指向對象的變量而不是這個對象,但當所有指向同一對象的變量都被unset後該變量會被銷毀。
看兩個簡單的例子,首先是 = null 的情況
<?php
class Bike
{
function __destruct()
{
echo "結束的時候會看到這句話";
}
}
$myBike = new Bike();
$myBike = null;
for($i=0;$i<5;$i++)
echo $i;
?>
執行後會發現,在循環輸出0到4之前析構函數就被執行了。

再看看unset的情況:
<?php
class Bike
{
function __destruct()
{
echo "結束的時候會看到這句話";
}
}
$myBike = new Bike();
$youBike = $myBike; //變量youBike也指向了對象
unset($myBike); //這裡還不會出現"結束的時候會看到這句話",因為只是回收了變量$myBike
for($i=0;$i<5;$i++)
echo $i;
unset($youBike);
//這裡就會輸出了,因為在回收$youBike這個變量的同時所有指向Bike的對象變量都沒了
?>

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved