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 < $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);

时间: 2024-12-28 06:12:35

PHP 自己实现var_dump函数的相关文章

echo(),print(),print_r(),var_dump()函数的区别

echo:是PHP语句,语句是没有返回值的,而 print 和 print_r 是函数,函数可以有返回值. print:只能打印出简单类型变量的值(如 int,string) print_r:可以打印出复杂类型变量的值(如数组,对象) echo:输出一个或者多个字符串 var_dump:可以打印出复杂类型变量的值和类型

php中var_dump()函数

var_dump() void var_dump ( mixed expression [, mixed expression [, ...]] ) var_dump()方法是判断一个变量的类型与长度,并输出变量的数值,如果变量有值输的是变量的值并回返数据类型.此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值.数组将递归展开值,通过缩进显示其结构. 例子: $a = "alsdflasdf;a";$b = var_dump($a);echo "";//

Javascript中的var_dump函数

最近在做基于OpenSocial的应用,在调试JavaScript时候有一个很头大的问题,就是没有类似PHP的var_dump()的函数,可以把变数内的资料印出来看看, debug时就只能不断的document.write(),不断的alert(). 实在忍受不了之后,通过google找到了一个非常好的JavaScript调试方法,目前看到的是可以打印Object/Array/Function/String四种类型,使用方法和PHP中的var_dump()一样,只要直接dump(变量名)即可.

var_dump()函数输出不完整,有省略号?解决办法

php开发环境里,安装了xdebug模块后,var_dump()输出的结果将比较易于查看,但默认情况下,var_dump() 输出的结果将有所变化:过多的数组元素不再显示,字符串变量将只显示前N个字符,较深的数组元素也被显示成省略号.这点会带来一些不便,我们修改配置文件,设置这些. 在php.ini里的xdebug节点中,加入如下 xdebug.var_display_max_children=128xdebug.var_display_max_data=512xdebug.var_displa

php实现var_dump函数

<?php class VarDump { private static $isInLoop = false; private static $buffer = false; public static function dump() { $args = func_get_args(); $args_num = func_num_args(); if (self::$buffer && $args_num == 1) { $args = func_get_args(); $args

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 = i

PHP盛宴——常用函数集锦

最近写了蛮多PHP,也接触到挺多常用的函数,大多都记了笔记,发个博客出来,共同学习.其实感觉学习一门语言,语法逻辑是软素质,而对语言的熟悉程度只能随着使用时间的增长而慢慢增长,当对一门语言的函数.库.特性都深深了解了,才能勉强称得上是熟练或者精通吧. 1. trim(),从字符串两端删除空白字符和其他预定义字符,当然可以删除指定的字符. 类似的还有ltrim().rtrim(). 2. __CLASS__,该常量返回该类被定义时的名字. 3. strtotime(),将任何英文文本的日期时间描述

PHP isset 函数作用

PHP isset 函数作用 isset函数是检测变量是否设置. 格式:bool isset ( mixed var [, mixed var [, ...]] ) 返回值: 若变量不存在则返回 FALSE 若变量存在且其值为NULL,也返回 FALSE 若变量存在且值不为NULL,则返回 TURE 同时检查多个变量时,每个单项都符合上一条要求时才返回 TRUE,否则结果为 FALSE如果已经使用 unset() 释放了一个变量之后,它将不再是 isset().若使用 isset() 测试一个被

var_dump()

php中var_dump()函数的详解说明 来源:   时间:2013-09-05 18:33:53   阅读数:460047 分享到:15 [导读] 本文章给大家全面的介绍一下关于php中var_dump()函数用法详解,大家可参考参考.var_dump()void var_dump ( mixed expression [, mixed expression [, ]] )var_dump()方法是判断一个变量的类型与长 本文章给大家全面的介绍一下关于php中var_dump()函数用法详解