php析构函数漏洞,php析构函数实例

本文详细介绍了PHP析构函数的用法,包括其在对象销毁时自动执行的特点,如何在程序结束或对象被显式销毁时执行自定义操作,并通过示例展示了`__destruct()`的使用场景和不同变量回收对析构函数的影响。
摘要由CSDN通过智能技术生成

本节内容:

php 析构函数的用法

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

析构函数:当某个对象成为垃圾或者当对象被显式销毁时执行。

__destruct() 析构函数,是在垃圾对象被回收时执行。

注意:

1、不要在程序中调用一个对象的析构函数。

2、析构函数不能带有参数。

通常在程序结束后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 的情况

复制代码 代码示例:

class Bike

{

function __destruct()

{

echo "结束的时候会看到这句话";

}

}

$myBike = new Bike();

$myBike = null;

for($i=0;$i<5;$i++)

echo $i;

?>

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

例2,unset的情况:

复制代码 代码示例:

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

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值