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

PHP
PHP 介绍
PHP 安装
PHP 语法
PHP 变量
PHP操作符
PHP If...Else
PHP Switch
PHP 数组
PHP 循环
PHP 函数
PHP 表单
PHP $_GET
PHP $_POST
PHP Date
PHP Include
PHP 文件处理
PHP 文件上传
PHP Cookies
PHP Sessions
PHP 发送邮件

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


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

登陆 | 还没注册?