ITPub博客

首页 > IT职业 > IT职场 > PHP自己实现var_dump函数

PHP自己实现var_dump函数

IT职场 作者:KingSunSha 时间:2021-09-09 09:36:25 0 删除 编辑


    function reconstructDump() {        $args   = func_num_args();        for($i = 0;$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) {rn";    foreach($param as $key=>$val) {        if(is_array($val)) {            dumpArr($val);        } else {            echo sprintf('["%s"] => %s(%s)',$key,gettype($val),$val);        }    }    echo "}rn";} function dumpObj($param) {    $className = get_class($param);    $reflect = new ReflectionClass($param);    $prop = $reflect->getDefaultProperties();    echo sprintf("Object %s #1(%d) {rn",$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 "rn";$arr2   = array(    "1"     => "Ddaddad",    "one"   => array("two" => "Dddd" ),    "three" => 1);reconstructDump($arr2); reconstructDump(1,true,null);exit;


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/1011/viewspace-2805126/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-04-15

  • 博文量
    78
  • 访问量
    496