PHP实现一个类似var_dump函数的功能!

PHP实现一个类似var_dump函数的功能!

<?php
    function reconstructDump() {
        $args   = func_num_args();
        for($i = 0;$i < $args; $i ++) {
            $param = func_get_arg($i);
            switch(gettype($param)) {
                case 'NULL' :
                    echo 'NULL';
                    break;
                case 'boolean' :
                    echo ($param ? 'bool(true)' : 'bool(false)');
                    break;
                case 'integer' :
                    echo "int($param)";
                    break;
                case 'double' :
                    echo "float($param)";
                    break;
                case 'string' :
                    dumpString($param);
                    break;
                case 'array' :
                    dumpArr($param);
                    break;
                case 'object' :
                    dumpObj($param);
                    break;
                case 'resource' :
                    echo 'resource';
                    break;
                default :
                    echo 'UNKNOWN TYPE';
                    break;
            }
        }
    }


function dumpString($param) {
    $str = sprintf("string(%d) %s",strlen($param),$param);
    echo $str;
}

function dumpArr($param) {
    $len = count($param);
    echo "array($len) {\r\n";
    foreach($param as $key=>$val) {
        if(is_array($val)) {
            dumpArr($val);
        } else {
            echo sprintf('["%s"] => %s(%s)',$key,gettype($val),$val);
        }
    }
    echo "}\r\n";
}

function dumpObj($param) {
    $className = get_class($param);
    $reflect = new ReflectionClass($param);
    $prop = $reflect->getDefaultProperties();
    echo sprintf("Object %s #1(%d) {\r\n",$className,count($prop));
    foreach($prop as $key=>$val) {
        echo "[\"$key\"] => ";
        reconstructDump($val);
    }
    echo "}";
}

class MyClass
{
    protected $_name;
    function test()
    {
        echo "hello";
    }
}

$str    = "test";
reconstructDump(new MyClass(),$str);
echo "\r\n";
$arr2   = array(
    "1"     => "Ddaddad",
    "one"   => array("two" => "Dddd" ),
    "three" => 1
);
reconstructDump($arr2); 
reconstructDump(1,true,null);
exit;

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值