Welcome Guest, Not a member yet? Register   Sign In
Better debug : var_dump improved
#1

[eluser]Spir[/eluser]
I just want to share a lib that helps to better debug any of your var.
Here is an example of output :
http://i52.tinypic.com/2lscuw8.jpg

Example code :
Code:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class welcome extends CI_Controller {
    public function index()
    {
        $this->load->library('vd');
        vd::dump($this);
    }    
}

vd.php content :
Code:
<?php  if (!defined('BASEPATH')) exit('No direct script access allowed');

/**
*
* VD
* usage : vd::dump($your_var);
*/
class vd {
    function dump ($var, $name = '') {
        $style = "background-color: whitesmoke; padding: 8px 8px 8px 8px; border: 1px solid black; text-align: left;";
        echo "<pre style='$style'>" .
            ($name != '' ? "$name : " : '') .
            vd::_get_info_var ($var, $name) .
            "</pre>";
    }
    
    function get ($var, $name = '') {
        return ($name != '' ? "$name : " : '') . vd::_get_info_var ($var, $name);
    }
    
    function _get_info_var ($var, $name = '', $indent = 0) {
        static $methods = array ();
        $indent > 0 or $methods = array ();

        $indent_chars = '  ';
        $spc = $indent > 0 ? str_repeat ($indent_chars, $indent ) : '';
        
        $out = '';
        if (is_array ($var)) {
            $out .= "<span style='color:red;'><b>Array</b></span> " . count ($var) . " (\n";
            foreach (array_keys ($var) as $key) {
                $out .= "$spc  [<span style='color:red;'>$key</span>] => ";
                if (($indent == 0) && ($name != '') && (! is_int ($key)) && ($name == $key)) {
                    $out .= "LOOP\n";
                } else {
                    $out .= vd::_get_info_var ($var[$key], '', $indent + 1);
                }
            }
            $out .= "$spc)";
        } else if (is_object ($var)) {
            $class = get_class ($var);
            $out .= "<span style='color:purple;'><b>Object</b></span> $class";
            $parent = get_parent_class ($var);
            $out .= $parent != '' ? " <span style='color:purple;'>extends</span> $parent" : '';
            $out .= " (\n";
            $arr = get_object_vars ($var);
            while (list($prop, $val) = each($arr)) {
                $out .= "$spc  " . "-><span style='color:purple;'>$prop</span> = ";
                $out .= vd::_get_info_var ($val, $name != '' ? $prop : '', $indent + 1);
            }
            $arr = get_class_methods ($var);
            $out .= "$spc  " . "$class methods: " . count ($arr) . " ";
            if (in_array ($class, $methods)) {
                $out .= "[already listed]\n";
            } else {
                $out .= "(\n";
                $methods[] = $class;
                while (list($prop, $val) = each($arr)) {
                    if ($val != $class) {
                        $out .= $indent_chars . "$spc  " . "->$val();\n";
                    } else {
                        $out .= $indent_chars . "$spc  " . "->$val(); [<b>constructor</b>]\n";
                    }
                }
                $out .= "$spc  " . ")\n";
            }
            $out .= "$spc)";
        } else if (is_resource ($var)) {
            $out .= "<span style='color:steelblue;'><b>Resource</b></span> [" . get_resource_type($var) . "] ( <span style='color:steelblue;'>" . $var . "</span> )";
        } else if (is_int ($var)) {
            $out .= "<span style='color:blue;'><b>Integer</b></span> ( <span style='color:blue;'>" . $var . "</span> )";
        } else if (is_float ($var)) {
            $out .= "<span style='color:blue;'><b>Float</b></span> ( <span style='color:blue;'>" . $var . "</span> )";
        } else if (is_numeric ($var)) {
            $out .= "<span style='color:blue;'><b>Numeric string</b></span> " . strlen($var) . " ( \"<span style='color:green;'>" . $var . "</span>\" )";
        } else if (is_string ($var)) {
            $out .= '<span style="color:green;"><b>String</b></span> ' . strlen($var) . ' ( "<span style="color:green;">' . nl2br(htmlentities($var)) . '</span>" )';
        } else if (is_bool ($var)) {
            $out .= "<span style='color:darkorange;'><b>Boolean</b></span> ( <span style='color:darkorange;'>" . ($var ? 'True' : 'False') . "</span> )";
        } else if (! isset ($var)) {
            $out .= "<b>Null</b>";
        } else {
            $out .= "<b>Other</b> ( " . $var . " )";
        }
        
        return $out . "\n";
    }
}
/* End of file */
#2

[eluser]n0xie[/eluser]
Or install Xdebug ;-)
#3

[eluser]Spir[/eluser]
[quote author="n0xie" date="1303416659"]Or install Xdebug ;-)[/quote]yeah but I'm a lazy ass
#4

[eluser]Unknown[/eluser]
Hey, thanks for this.
Just what I was looking for, I only wanted a pretty var_dump.




Theme © iAndrew 2016 - Forum software by © MyBB