php析构函数实例

发布时间:2020-10-24编辑:脚本学堂
分享二个php析构函数的例子,析构函数不能带有参数,当某个对象成为垃圾或者当对象被显式销毁时执行。

本节内容:
php 析构函数的用法

php编程中,自php5起新增了析构函数。

析构函数:当某个对象成为垃圾或者当对象被显式销毁时执行。
__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后该变量会被销毁。

例1,首先是 = null 的情况
 

复制代码 代码示例:
<?php
class Bike
{
function __destruct()
{
echo "结束的时候会看到这句话";
}
}
$myBike = new Bike();
$myBike = null;
for($i=0;$i<5;$i++)
echo $i;
?>
 

执行后会发现,在循环输出0到4之前析构函数就被执行了。

例2,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的对象变量都没了
?>