PHP var_dump object对象时的数字编号
2010-12-23 阅读 169
今天陈song同学问道var\_dump object对象的一个问题,顺手记录在这里。先看如下代码:
class Test {
public $a;
public function __construct() {
$this->a = 1;
}
}
$test_1 = new Test();
var_dump($test_1);
```
执行后结果:
object(Test)#1 (1) {
["a"]=>
int(1)
}
```
在输入结果中,可以在第一行看到‘#1’,这里数字‘1’代表什么含义呢?
推测一下,这里应该是一个编号。为了弄清具体是什么编号,做了如下代码的测试。
class Test {
public $a;
public function __construct() {
$this->a = 1;
}
}
$test_1 = new Test();
var_dump($test_1);
$test_2 = new Test();
var_dump($test_2);
```
结果:
object(Test)#1 (1) {
["a"]=>
int(1)
}
object(Test)#2 (1) {
["a"]=>
int(1)
}
```
看到这个数字的递增,大胆猜测,这里应该是class(类)在程序执行中实例化对象的编号。
验证上述推测,继续做如下实验。
class Test {
public $a;
public function __construct() {
$this->a = 1;
}
}
$test_1 = new Test();
var_dump($test_1);
unset($test_1);
$test_2 = new Test();
var_dump($test_2);
```
结果:
object(Test)#1 (1) {
["a"]=>
int(1)
}
object(Test)#1 (1) {
["a"]=>
int(1)
}
```
两次的输入数字都为1,因为第二个对象输出之前,就已经将第一个对象销毁。
总结:
在使用var_dump时,在dump结果的第一行#后面的数字,代表了该对象(object)所属类(class)在运行内存中实例化的的编号。
PHP var_dump
更新于 2023年03月28日