php dump函数,PHP 自己实现var_dump函数

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 

$param = $args[$i];

$ptype = gettype($param);

switch ($ptype) {

case "NULL":

self::dump_null();

break;

case "boolean":

self::dump_boolean($param);

break;

case "integer":

self::dump_integer($param);

break;

case "double":

self::dump_double($param);

break;

case "string":

self::dump_string($param);

break;

case "array":

self::dump_array($param);

break;

case "object":

self::dump_object($param);

break;

case "resource":

echo "resource";

break;

default:

echo "unknown type";

}

}

}

public static function dumpx()

{

self::$buffer = true;

ob_start();

self::dumps(func_get_args());

$var = ob_get_clean();

return $var;

}

public static function dump_null()

{

echo "NULL";

if (!self::$isInLoop) {

echo "\n";

}

self::$isInLoop = false;

}

public static function dump_boolean($bool)

{

if ($bool) {

echo "bool(true)";

} else {

echo "bool(false)";

}

if (!self::$isInLoop) {

echo "\n";

}

self::$isInLoop = false;

}

public static function dump_integer($int)

{

echo "int($int)";

if (!self::$isInLoop) {

echo "\n";

}

self::$isInLoop = false;

}

public static function dump_double($double)

{

echo "float($double)";

if (!self::$isInLoop) {

echo "\n";

}

self::$isInLoop = false;

}

public static function dump_string($str)

{

$len = strlen($str);

$value = "string($len) \"$str\"";

echo $value;

if (!self::$isInLoop) {

echo "\n";

}

self::$isInLoop = false;

}

public static function dump_array($arr)

{

static $pads = [];

$keys = array_keys($arr);

$len = count($arr);

echo "array($len) {";

array_push($pads, "    ");

for ($i = 0; $i 

echo "\n", implode('', $pads), "[\"$keys[$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 

$index = $i;

if (!$prop[$index]->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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值