首页 > Web开发 > 详细

PHP自己实现var_dump函数

时间:2016-03-29 06:39:39      阅读:285      评论:0      收藏:0      [点我收藏+]
<?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 {
            $valType = gettype($val);
            echo "[\"$key\"] => $valType($val)\r\n";
        }
    }
    echo "}\r\n";
}

function dumpObj($param) {
    $className = get_class($param);
    echo "object($className)#1 ";

    $reflect = new ReflectionClass($param);
    $prop = $reflect->getDefaultProperties();
    $len = count($prop);
    echo "($len) {\r\n";
    foreach($prop as $key=>$val) {
        echo "[\"$key\"] => ";
        reconstructDump($val);
    }
    echo "}";
}

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

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


本文出自 “我相信” 博客,请务必保留此出处http://mrcelite.blog.51cto.com/2977858/1757726

PHP自己实现var_dump函数

原文:http://mrcelite.blog.51cto.com/2977858/1757726

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!