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

PHP
PHP 安全邮件
MySQL 介绍
连接 MySQL
创建 MySQL
MySQL 插入记录
MySQL 选择记录
MySQL Where
MySQL Order By
MySQL 记录更新
MySQL 删除记录
PHP ODBC
XML Expat Parser
XML SimpleXML
PHP 数组参考
PHP Calendar
PHP Date
PHP Directory
PHP Filesystem
PHP FTP
PHP HTTP

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-03-01   浏览: 848 ::
收藏到网摘: 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

登陆 | 还没注册?