通过自己PHP编码实现var_dump()方法

个人学习笔记

核心源码如下:

/**
 * 打印
 * @param array ...$params
 * @author klinson <klinson@163.com>
 */
function info(...$params)
{
    foreach ($params as $param) {
        info_item($param);
    }
}

/**
 * 打印单个变量
 * @param $param
 * @param int $i
 * @author klinson <klinson@163.com>
 */
function info_item($param, $i = 0)
{
    switch (gettype($param)) {
        case 'array':
            info_array($param, $i);
            break;
        case 'object':
            info_object($param, $i);
            break;
        case 'boolean':
            echo "bool(".($param ? "true" : "false").")";
                break;
        case 'integer':
            echo "int({$param})";
            break;
        case 'string':
            echo "string({$param})";
            break;
        case 'double':
            echo  "float({$param})";
            break;
        case 'null':
            echo 'null';
            break;
        case 'resource':
            echo 'resource';
            break;
        default:
            echo 'UNKNOWN TYPE';
            break;
    }
    echo PHP_EOL;
}

/**
 * 打印数组
 * @param $param
 * @param int $i
 * @author klinson <klinson@163.com>
 */
function info_array($param, $i = 0)
{
    // 前置空格
    $space = '';
    $num = $i;
    while ($num) {
        $space .= '  ';
        $num--;
    }

    echo 'array['.count($param).']: {'.PHP_EOL;
    foreach ($param as $key => $item) {
        echo $space."  [{$key}] => ";
        info_item($item, $i+1);
    }
    echo $space.'}';
}

/**
 * 打印对象
 * @param $param
 * @param int $i
 * @author klinson <klinson@163.com>
 */
function info_object($param, $i = 0)
{
    // 前置空格
    $space = '';
    $num = $i;
    while ($num) {
        $space .= '  ';
        $num--;
    }

    echo 'object('.get_class($param).'['.count($param).']): {'.PHP_EOL;
    foreach ($param as $key => $item) {
        echo $space."  [{$key}] => ";
        info_item($item, $i+1);
    }
    echo $space.'}';
}

测试代码:

$a = 1.11;
$b = 'a';
$c = [$a, $b];
$d = new stdClass();
$d->aaa = 'aaa';
$d->bb = $c;
info($a, $b, $c, $d);

效果如下:

图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值