php – 为我的类定制var_dump输出

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 为我的类定制var_dump输出脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
是否可以覆盖自定义类的var_dump输出
我想要这样的东西:
class MyClass{
    public $foo;
    public $bar;
    //pseudo-code
    public function __dump($foo,$bar)
    {
        return 'Foo:$foo,bar:$bar';
    }
}

VAR_dump(array($instanceOfMyClass));
//IT should output this:
array(1) {
  [0] =>
  class MyClass#1 (2) {
    Foo:valueOfFoo,bar:valueOfBar
  }
}

知道我可以使用一些第三方的var_dump替代方案,但是我想在我的库项目中自定义var_dump的行为.

谢谢.

PHP 5.6.0中,您可以使用 __debugInfo()功能自定义 var_dump()输出.

例:

class MyDateTime{
    public $year,$month,$day,$hour,$minute,$second;
    public function __debuginfo() {
        return array(
            'date' => $this->year . "-" . $this->;month . "-" . $this->day,'time' => sPRintf("%02d:%02d:%02d",$this->hour,$this->minute,$this->second),);
    }
}

$dt = new MyDateTime();
$dt->year = 2014; $dt->month = 9; $dt->day = 20;
$dt->hour = 16; $dt->minute = 2; $dt->second = 41;
var_dump($dt);

输出PHP 5.6.0:

object(MyDateTime)#1 (2) {
  ["date"]=>
  string(9) "2014-9-20"
  ["time"]=>
  string(8) "16:02:41"
}

输出PHP 5.0.0 – 5.5.16:

object(MyDateTime)#1 (6) {
  ["year"]=>
  int(2014)
  ["month"]=>
  int(9)
  ["day"]=>
  int(20)
  ["hour"]=>
  int(16)
  ["minute"]=>
  int(2)
  ["second"]=>
  int(41)
}

笔记:

> __debugInfo()必须返回一个数组. PHP 5.6.0中有一个错误返回一个字符串:

>它似乎与print_r()一起工作,虽然这似乎没有记录在任何地方.

脚本宝典总结

以上是脚本宝典为你收集整理的php – 为我的类定制var_dump输出全部内容,希望文章能够帮你解决php – 为我的类定制var_dump输出所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。