PHP __debugInfo魔术方法

该方法在PHP 5.6.0及其以上版本可以用

我们直接来看一段代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php

class Foo
{
public function __debugInfo()
{
return [
'one' => 1,
'two' => 2,
];
}
}

var_dump(new Foo);

输出结果如下:

1
2
3
4
5
6
object(Foo)#1 (2) {
["one"]=>
int(1)
["two"]=>
int(2)
}

可以发现,使用var_dump的时候,会去调用__debugInfo魔术方法。这个方法对于调试还是比较有用,比如我们写PHPC扩展,如果自定义了类对象,我们如果想要输出struct里面的信息,就可以去实现__debugInfo方法,然后在这个方法中去获取struct里面的信息,作为数组返回。