PHP 实例化对象注销

栏目: PHP · 发布时间: 6年前

内容简介:诶呀 , 这个问题说出来有些傻X , 但不测试一下. 写程序心里还是发慌.PHP的内存回收原理, 不多说了 自己看手册. 就是个引用计数器, 变量上没有数量就回收了.对象也是一样, 当你实例化的对象赋值到变量上, 这个对象的引用关系就赋值到变量上了. 如果重新赋值对象变量, 原有对象也就没有计数了, 也就被注销了.

诶呀 , 这个问题说出来有些傻X , 但不测试一下. 写程序心里还是发慌.

PHP的内存回收原理, 不多说了 自己看手册. 就是个引用计数器, 变量上没有数量就回收了.

对象也是一样, 当你实例化的对象赋值到变量上, 这个对象的引用关系就赋值到变量上了. 如果重新赋值对象变量, 原有对象也就没有计数了, 也就被注销了.

举个栗子:

<?php

class Obj {

    public function __construct()
    {
        echo __FUNCTION__, PHP_EOL;
    }

    public function __destruct()
    {
        echo __FUNCTION__, PHP_EOL;
    }
}

$data = new Obj();

$i =0 ;
do { 
    if ($i > 3) {
        $data = []; // 注销对象 unset 也 ok 只要计数归零 对象就会注销 (swoole 对象内生成定时器问题 待测试)
    }
    sleep(1);
    echo $i++, PHP_EOL;
} while($i < 5);

运行后输出

localhost:Desktop admin$ php test.php 
__construct
0
1
2
3
__destruct
4
localhost:Desktop admin$

答案很明显了, 重新赋值对象变量, 析构函数触发.


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

AI极简经济学

AI极简经济学

阿杰伊·阿格拉沃尔、乔舒亚·甘斯、阿维·戈德法布 / 闾佳 / 湖南科技出版社 / 2018-12-1 / 58.00

人工智能正在以不可阻挡的态势席卷全球。无论是iPhone的神经网络引擎、AlphaGo的围棋算法,还是无人驾驶、深度学习……毫无疑问,人工智能正在改写行业形态。如同此前个人电脑、互联网、大数据的风行一般,技术创新又一次极大地改变了我们的工作与生活。 那么,究竟应该如何看待人工智能?在《AI极简经济学》一书中,三位深耕人工智能和决策领域的经济学家给出了清晰的答案。他们以坚实的经济学理论剖析动态,把握......一起来看看 《AI极简经济学》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具