Make var_dump look pretty

后端 未结 14 2427
忘掉有多难
忘掉有多难 2020-12-02 04:23

I have a simple $_GET[] query var set for showing testing data when pulling down queries from the DB.


  <         


        
相关标签:
14条回答
  • 2020-12-02 04:33

    Here is my function to have a pretty var_dump. Combined with Xdebug, it helps a lot to have a better view of what we are dumping.

    I improved a bit the display of Xdebug (give some space around, separator between values, wrap long variables, etc).

    When you call the function, you can set a title, a background, a text color to distinguish all your var_dump in a page.

    Or not ;)

    /**
     * Pretty var_dump 
     * Possibility to set a title, a background-color and a text color
     */ 
    function dump($data, $title="", $background="#EEEEEE", $color="#000000"){
    
        //=== Style  
        echo "  
        <style>
            /* Styling pre tag */
            pre {
                padding:10px 20px;
                white-space: pre-wrap;
                white-space: -moz-pre-wrap;
                white-space: -pre-wrap;
                white-space: -o-pre-wrap;
                word-wrap: break-word;
            }
    
            /* ===========================
            == To use with XDEBUG 
            =========================== */
            /* Source file */
            pre small:nth-child(1) {
                font-weight: bold;
                font-size: 14px;
                color: #CC0000;
            }
            pre small:nth-child(1)::after {
                content: '';
                position: relative;
                width: 100%;
                height: 20px;
                left: 0;
                display: block;
                clear: both;
            }
    
            /* Separator */
            pre i::after{
                content: '';
                position: relative;
                width: 100%;
                height: 15px;
                left: 0;
                display: block;
                clear: both;
                border-bottom: 1px solid grey;
            }  
        </style>
        ";
    
        //=== Content            
        echo "<pre style='background:$background; color:$color; padding:10px 20px; border:2px inset $color'>";
        echo    "<h2>$title</h2>";
                var_dump($data); 
        echo "</pre>";
    
    }
    
    0 讨论(0)
  • 2020-12-02 04:34

    I wrote a function (debug_display) which can print, arrays, objects, and file info in pretty way.

    <?php
    function debug_display($var,$show = false) {
        if($show) { $dis = 'block'; }else { $dis = 'none'; }
        ob_start();
        echo '<div style="display:'.$dis.';text-align:left; direction:ltr;"><b>Idea Debug Method : </b>
            <pre>';
        if(is_bool($var)) {
            echo $var === TRUE ? 'Boolean(TRUE)' : 'Boolean(FALSE)';
        }else {
            if(FALSE == empty($var) && $var !== NULL && $var != '0') {
                if(is_array($var)) {
                    echo "Number of Indexes: " . count($var) . "\n";
                    print_r($var);
                } elseif(is_object($var)) {
                    print_r($var);
                } elseif(@is_file($var)){
                    $stat = stat($var);
                    $perm = substr(sprintf('%o',$stat['mode']), -4);
                    $accesstime = gmdate('Y/m/d H:i:s', $stat['atime']);
                    $modification = gmdate('Y/m/d H:i:s', $stat['mtime']);
                    $change = gmdate('Y/m/d H:i:s', $stat['ctime']);
                    echo "
        file path : $var
        file size : {$stat['size']} Byte
        device number : {$stat['dev']}
        permission : {$perm}
        last access time was : {$accesstime}
        last modified time was : {$modification}
        last change time was : {$change}
        ";
                }elseif(is_string($var)) {
                    print_r(htmlentities(str_replace("\t", '  ', $var)));
                }  else {
                    print_r($var);
                }
            }else {
                echo 'Undefined';
            }
        }
        echo '</pre>
        </div>';
        $output = ob_get_contents();
        ob_end_clean();
        echo $output;
        unset($output);
    }
    
    0 讨论(0)
  • 2020-12-02 04:40

    I really love var_export(). If you like copy/paste-able code, try:

    echo '<pre>' . var_export($data, true) . '</pre>';
    

    Or even something like this for color syntax highlighting:

    highlight_string("<?php\n\$data =\n" . var_export($data, true) . ";\n?>");
    

    You can do the same with print_r(). For var_dump() you would just need to add the <pre> tags:

    echo '<pre>';
    var_dump($data);
    echo '</pre>';
    
    0 讨论(0)
  • 2020-12-02 04:42

    I have make an addition to @AbraCadaver answers. I have included a javascript script which will delete php starting and closing tag. We will have clean more pretty dump.

    May be somebody like this too.

    function dd($data){
      highlight_string("<?php\n " . var_export($data, true) . "?>");
      echo '<script>document.getElementsByTagName("code")[0].getElementsByTagName("span")[1].remove() ;document.getElementsByTagName("code")[0].getElementsByTagName("span")[document.getElementsByTagName("code")[0].getElementsByTagName("span").length - 1].remove() ; </script>';
      die();
    }
    

    Result before:

    Result After:

    Now we don't have php starting and closing tag

    0 讨论(0)
  • 2020-12-02 04:42

    I don't seem to have enough rep to close this as a duplicate, but it is one if someone else can do that. I posted the same thing over at A more pretty/informative Var_dump alternative in PHP? but for the sake of saving time, I'll copy/paste it here too:

    I had to add another answer here because I didn't really want to go through the steps in the other solutions. It is extremely simple and requires no extensions, includes etc and is what I prefer. It's very easy and very fast.

    First just json_encode the variable in question:

    echo json_encode($theResult);
    

    Copy the result you get into the JSON Editor at http://jsoneditoronline.org/ just copy it into the left side pane, click Copy > and it pretty prints the JSON in a really nice tree format.

    To each their own, but hopefully this helps some others have one more nice option! :)

    0 讨论(0)
  • 2020-12-02 04:42
    function var_view($var)
    {
    
        ini_set("highlight.keyword", "#a50000;  font-weight: bolder");
        ini_set("highlight.string", "#5825b6; font-weight: lighter; ");
    
        ob_start();
        highlight_string("<?php\n" . var_export($var, true) . "?>");
        $highlighted_output = ob_get_clean();
    
        $highlighted_output = str_replace( ["&lt;?php","?&gt;"] , '', $highlighted_output );
    
        echo $highlighted_output;
        die();
    }
    
    0 讨论(0)
提交回复
热议问题