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 < $args_num; ++$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 < $len; $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 < $len; $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);
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦