ITPub博客

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

PHP 自己实现var_dump函数

IT图书 作者:lotus_ruan 时间:2021-09-09 09:27:32 0 删除 编辑

private static $isInLoop = false;
private static $buffer = false;

public static function dumps()
{
    $args = func_get_args();
    $args_num = func_num_args();
    if (self::$buffer && $args_num == 1) {
        $args = func_get_args();
        $args = isset($args[0]) ? $args[0] : [];
        if (!empty($args) && (is_array($args) || is_object($args))) {
            $args_num = count($args);
        }
    }
    self::$buffer = false;
    for ($i = 0; $i  ";
        $index = $keys[$i];
        self::$isInLoop = true;
        self::dumps($arr[$index]);
    }
    array_pop($pads);
    $pad = implode('', $pads);
    echo "n{$pad}}";
    if ($pad == '') {
        echo "n";
    }
}

public static function dump_prop($obj)
{
    static $pads = [];
    $reflect = new ReflectionClass($obj);
    $prop = $reflect->getProperties();
    $len = count($prop);
    echo "($len) {";
    array_push($pads, "    ");
    for ($i = 0; $i isPublic()) {
            continue;
        }
        $prop_name = $prop[$index]->getName();
        echo "n", implode('', $pads), "["{$prop_name}"] => ";
        self::$isInLoop = true;
        self::dumps($prop[$index]->getValue($obj));
    }
    array_pop($pads);
    $pad = implode('', $pads);
    echo "n{$pad}}";
    if ($pad == '') {
        echo "n";
    }
}

public static function dump_object($obj)
{
    static $objId = 1;
    $className = get_class($obj);
    echo "object($className)#$objId";
    $objId++;
    self::dump_prop($obj);
}



dumps(new class(),"abc",111);

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

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

注册时间:2015-01-10

  • 博文量
    79
  • 访问量
    17975