【发布时间】:2012-02-05 22:57:42
【问题描述】:
这是我用来得出以下推论的代码及其输出:
class a {
public $var1;
public $var2;
}
$obj0 = new a;
var_dump($obj0);
class b {
public $var1;
public $var2;
public $var3;
}
$obj1 = new b;
var_dump($obj1);
$obj2 = new stdClass;
var_dump($obj2);
$obj3 = new stdClass;
var_dump($obj3);
$obj4 = new stdClass;
var_dump($obj4);
$obj5 = new stdClass;
var_dump($obj5);
var_dump(new stdClass);
$obj6 = new stdClass;
var_dump($obj6);
输出:
object(a)#1 (2) {
["var1"]=> NULL
["var2"]=> NULL
}
object(b)#2 (3) {
["var1"]=> NULL
["var2"]=> NULL
["var3"]=> NULL
}
object(stdClass)#3 (0) {
}
object(stdClass)#4 (0) {
}
object(stdClass)#5 (0) {
}
object(stdClass)#6 (0) {
}
object(stdClass)#7 (0) {
}
object(stdClass)#7 (0) {
}
对象的var_dump 中object(someClass) 行旁边的#<some-number> 实际上是#<count>。哪里,
count 是 objects / zval's for objects 的数量,无论它属于哪个类,到目前为止已创建。对于创建的每个对象,它会不断增加,并且当 zval 的引用计数达到零(即垃圾收集)时减 1。
我说的对吗?
【问题讨论】:
-
你还记得你之前关于垃圾收集/牛的问题之一中的object identifier that PHP has吗?
-
@hakre 是的,我记得。请原谅延迟的回复。现在浏览答案。
标签: php php-internals