关于 var_dump 输出的问题
Posted
技术标签:
【中文标题】关于 var_dump 输出的问题【英文标题】:Question about var_dump output 【发布时间】:2011-04-15 07:58:15 【问题描述】:当我var_dump
一个对象时,输出如下:
object(XCTemplate)#2477 (4)
["id"]=>
string(1) "1"
["attributes"]=>
array(0)
["db_table_name"]=>
string(14) "template_names"
["cache"]=>
array(0)
XCTemplate
当然是它的类,但是# 后面的整数(这里:2477)是什么意思?
【问题讨论】:
【参考方案1】:这是与 XCTemplate
的特定实例相关联的唯一 ID。 AFAIK 这没有记录,也没有办法得到它(除了使用var_dump()
);我看过Reflection
类。
据我所知:
ID 对于每个实例都是唯一的;从 1 开始,每个新对象加 1。这包括每个对象;他们不必属于同一类。 销毁实例(例如:通过unset
)会释放其 id,并且下一个实例化对象可以(并且将)使用它。
与变量无关;例如:
$foo = new Foo();
var_dump($foo);
$foo = new Foo();
var_dump($foo);
将为不同的实例生成不同的 id。
这不和资源id一样,你可以直接转换成int
来获取id:
$resource= curl_init();
var_dump($resource); // resource #1 of type curl
print(intval($resource)); // 1
print((int) $resource); // 1
【讨论】:
要添加,在每次实例化时,这个数字都会增加。如果一个实例被删除(未设置),那么该实例的 # 将被重新用于下一个实例。 另外,它不是特定类的实例ID,而是任何类的实例ID。 这是否意味着在整个脚本中已经初始化了 2477 个对象? :O @Daniel 是的,看起来就是这样。您使用的是繁重的框架吗? 我愿意,它大量使用了 MVC。仍然有一个非常活泼的表现。另外,非常感谢您非常详细的回答!以上是关于关于 var_dump 输出的问题的主要内容,如果未能解决你的问题,请参考以下文章