it-swarm.com.de

Lass var_dump schön aussehen

Ich habe ein einfaches $_GET[]-Abfrage-Var-Set zum Anzeigen von Testdaten, wenn Abfragen aus der DB heruntergezogen werden.

<?php if($_GET['test']): ?>
  <div id="test" style="padding: 24px; background: #fff; text-align: center;">  
    <table>
      <tr style="font-weight: bold;"><td>MLS</td></tr>
      <tr><td><?php echo KEY; ?></td></tr>
      <tr style="font-weight: bold;"><td>QUERY</td></tr>
      <tr><td><?php echo $data_q; ?></td></tr>
      <tr style="font-weight: bold;"><td>DATA</td></tr>
      <tr><td><?php var_dump($data); ?></td></tr>
    </table>    
</div>
<?php endif; ?>

Wenn ich var_dump mache, ist es wie erwartet diese große Array-Zeichenfolge, die alle zusammengeschmiert wird. Gibt es eine Möglichkeit, zumindest dazu Zeilenumbrüche einzufügen oder den var_dump lesbarer darzustellen? Ich bin offen für jQuery-Vorschläge zum Bearbeiten der Zeichenfolge, nachdem sie veröffentlicht wurde.

100
Plummer

Ich liebe var_export() wirklich. Wenn Sie Code kopieren/einfügen möchten, versuchen Sie Folgendes:

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

Oder sogar so etwas zum Hervorheben der Farbsyntax:

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

Versuchen Sie xdebug extension für PHP.

Beispiel:

<?php var_dump($_SERVER); ?>

Ausgänge:

enter image description here

37
Latheesan

Verwenden Sie vorformatierten HTML-Code 

echo '<pre>';
var_dump($data);
echo '</pre>';
16
Wael Assaf

Ich habe einen Zusatz zu den Antworten von @AbraCadaver ..__ gemacht. Ich habe ein Javascript-Skript eingefügt, das php-Start- und Schließ-Tag ..__ löscht.

Kann auch jemand so sein.

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();
}

Ergebnis vor:

 enter image description here

Ergebnis nach:

 enter image description here

Jetzt haben wir kein PHP-Tag und kein schließendes Tag 

6
Muhammad Awais

Wenn es "alles zusammengemischt" ist, können Sie oft den alten Quellcode "Quellcode anzeigen" ausprobieren. Die Dumps, Nachrichten und Ausnahmen scheinen manchmal nur eine lange Zeichenfolge zu sein, wenn sich herausstellt, dass die Zeilenumbrüche einfach nicht angezeigt werden. Besonders XML-Bäume.

Alternativ habe ich einmal ein kleines Werkzeug namens InteractiveVarDump für diesen Zweck erstellt. Es hat sicherlich seine Grenzen, kann aber manchmal auch sehr bequem sein. Obwohl es für PHP 5 konzipiert wurde.

3
WoodrowShigeru

Der beste und einfachste Weg, um Nice var_dump zu erhalten, ist xDebug (muss für jeden PHP-Entwickler haben.)

In der Konsole: apt-get install php-xdebug Danach sollten Sie die php.ini (abhängig vom verwendeten Stack) für /etc/php/7.0/fpm/php.ini öffnen

Suche nach display_errors

gleich einstellen -> display_errors = On

Überprüfen Sie html_errors in derselben Datei etwas weiter unten, es muss auch On sein.

Speichern und schließen

Nach dem Öffnen /etc/php/7.0/fpm/conf.d/20-xdebug.ini

Fügen Sie am Ende Folgendes hinzu: `` ` Xdebug.cli_color = 1

`` ` Speichern und beenden.

Viele weitere verfügbare Optionen und Dokumentationen für xdebug können hier gegründet werden.

https://xdebug.org/docs/

Viel Glück und hab Spaß !!!

Ergebnis

1
Moris Finkel

Sie könnten diese debugVar() anstelle von var_dump() verwenden.

Check out: https://github.com/E1NSER/php-debug-function

1
Sascha Eisner
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", '', $highlighted_output );
    $highlighted_output = str_replace( "?&gt;", '', $highlighted_output );

    echo $highlighted_output;
    die();
}
0
Mr.Hosseini

Hier ist meine Funktion, um einen hübschen var_dump zu haben. In Kombination mit Xdebug ist es sehr hilfreich, um einen besseren Überblick über das zu erhalten, was wir dumpen.

Ich habe die Anzeige von Xdebug ein wenig verbessert (geben Sie etwas Platz, Trennzeichen zwischen Werten, umwickeln Sie lange Variablen usw.).

Wenn Sie die Funktion aufrufen, können Sie einen Titel, einen Hintergrund und eine Textfarbe festlegen, um alle Ihre var_dump auf einer Seite zu unterscheiden.

Oder nicht ;)

/**
 * 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
Arno
0
Michael Käfer