PHP 魔术方法 - __debugInfo()
首先需要给大家道歉,说真的,我介绍这些魔术方法的时候并没有认真的先去看每一个魔术方法对应的是什么函数,只有要写那个魔术方法的时候才会认真去看。
导致了什么问题 ?
我以为 var_dump()
是没有对应的魔术方法的,可谁知,最后介绍的一个魔术方法 __debugInfo()
,就对应着 var_dump()
如果你认真看下来,我想,__debugInfo()
魔术方法应该不是什么难题了。
魔术方法 __debugInfo()
从 PHP 5.6.0 开始,PHP 提供了 __debugInfo()
用于定制对象的 var_dump()
输出结果
{: .info }
当调用 var_dump()
输出一个对象时,如果该对象定义了 __debugInfo()
魔术方法,那么就会自动先调用该魔术方法返回的结果,然后再输出,否则默认会输出对象的所有可见属性
该魔术方法的原型如下
array __debugInfo ( void )
它没有任何参数,但返回值是数组类型。
范例
下面的范例,我们为 Person
类定义一个 __debugInfo()
用来定制 var_dump()
的输出结果
<?php class Person { private $name; public function __construct($name) { $this->name = $name; } /** * @return array */ public function __debugInfo() { return [ 'name_is' => $this->name . ' www.twle.cn' ]; } } var_dump(new Person('Yufei'));
输出结果如下
object(Person)#1 (1) { ["name_is"]=> string(17) "Yufei www.twle.cn" }