一起源码网

  • www.171739.xyz
  • 全球最大的互联网技术和资源下载平台
搜索
猜你喜欢
查看: 7608|回复: 1
打印 上一主题 下一主题

php析构函数的用法详解

[复制链接]

0

主题

0

帖子

1万

积分

钻石会员

Rank: 8Rank: 8

积分
17424
QQ
跳转到指定楼层
楼主
发表于 2020-3-17 11:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void destruct ( void )

PHP 5 引入了的概念,这类似于的语言,如 C++。析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。

析构函数示例

<?php
class  MyDestructableClass  {
   function  construct () {
       print  "In constructor
" ;
        $this -> name  =  "MyDestructableClass" ;
   }

   function  destruct () {
       print  "Destroying "  .  $this -> name  .  "
" ;
   }
}

$obj  = new  MyDestructableClass ();
?>

和一样,父类的析构函数不会被引擎暗中调用。要执行父类的析构函数,必须在子类的析构函数体中显式调用parent::destruct() 。此外也和构造函数一样,子类如果自己没有定义析构函数则会继承父类的。

析构函数即使在使用 exit() 终止脚本运行时也会被调用。在析构函数中调用 exit() 将会中止其余关闭操作的运行。

Note:

析构函数在脚本关闭时调用,此时所有的 HTTP 头信息已经发出。脚本关闭时的工作目录有可能和在 SAPI(如 apache)中时不同。

Note:

试图在析构函数(在脚本终止时被调用)中抛出一个异常会导致致命错误。

class x
{
 function construct()
 {
  $this->file = fopen('path', 'a');
 }
 function destruct()
 {
  fclose($this->file);
 }
}

简单的说,析构函数是用来在对象关闭时完成的特殊工作,比如我写的上例,在实例化同时打开某文件,但是它什么时候关闭呢,用完就关闭呗,所以析构函数直接关闭它,

又或者在析构时,我们将处理好的某些数据一并写进数据库,这时可以考虑使用析构函数内完成,在析构完成前,这些对象属性仍然存在,并且仅用于内部访问,所以可以放心的做与对象有关的任何善后工作

析构函数并不是为了把对象自身的内存释放,而是当用户需要额外释放某些内存时用它来指导php需要释放的内存在哪里,最后php在析构时使用

一般情况下,我们不需要显式写虚构函数.除非你真的有需要释放的资源.
简单的释放使用以下的就可以.
unset();
或者 $变量名 = NULL;即可.

分享到:  QQ好友和群QQ好友和群
收藏收藏
回复

使用道具 举报

0

主题

21

帖子

2万

积分

钻石会员

Rank: 8Rank: 8

积分
21429
QQ
沙发
发表于 2022-9-8 12:15 | 只看该作者
源代码教程
回复

使用道具 举报

一起源码让程序更轻更快

www.171739.xyz

工作时间 周一至周六 8:00-17:30

侵权处理

客服QQ点击咨询

关注抖音号

定期抽VIP

Copyright © 2016-2021 https://www.171739.xyz/ 滇ICP备13200218号

快速回复 返回顶部 返回列表