登录  /  注册
php关于引用计数的疑问?
迷茫
迷茫 2017-06-27 09:18:05
[PHP讨论组]

在测试php关于引用计数的时候,看到一个变量有一个zval容器。里面包含两个属性 一个refcount 一个是is_ref

$array= array( 'meaning' => 'life', 'number' => 42 );
xdebug_debug_zval( 'array' );

测试数组的引用计数的时候 返回如期的结果

array (refcount=1, is_ref=0),
array (size=2)
'meaning' => (refcount=1, is_ref=0),string 'life' (length=4)
'number' => (refcount=1, is_ref=0),int 42

但是在测试对象的时候。出现一个疑问?

class  A{
    private $a1;
    public  $a2;
}

$class1 = new A();

xdebug_debug_zval('class1');

class1:
(refcount=1, is_ref=0),
object(A)[1]
private 'a1' => (refcount=2, is_ref=0),null
public 'a2' => (refcount=2, is_ref=0),null

不是很明白为什么?这里会是2 ?而不是1.而不是像php数组一样。出现预期的refcount为1

而在php官方手册中。关于引用计数的关于符合类型的解释。
php引用计数

像 array和object这样的复合类型时,事情就稍微有点复杂. 与 标量(scalar)类型的值不同,array和 object类型的变量把它们的成员或属性存在自己的符号表中.

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号