当前位置: 首页 > 网络学院 > 服务端脚本教程 > PHP > php5面向对象 - 基础 - 析构函数

PHP
php 无限分类的实现
常用PHP代码
windows下安装配置php视频教程
MySQL数据库结构和数据的导出和导入
PHP实现 IP Whois 查询
PHP5 this,self和parent关键字详解
PHP 安全技巧连载 #1[译]
PHP 安全技巧连载 #2[译]
PHP 安全技巧连载 #3[译]
PHP 安全技巧连载 #4[译]
PHP 安全技巧连载 #5[译]
PHP 安全技巧连载 #6[译]
PHP 安全技巧连载 #7[译]
PHP 安全技巧连载 #8[译]
PHP 安全技巧连载 #9[译]
PHP 安全技巧连载 #10[译]
PHP 安全技巧连载 #11[译]
PHP error_reporting的使用
PHP 安全技巧连载 #12
使用PHP做Linux/Unix守护进程

PHP 中的 php5面向对象 - 基础 - 析构函数


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-03-01   浏览: 834 ::
收藏到网摘: n/a

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

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

评论 (0) All

登陆 | 还没注册?