web-dev-qa-db-fra.com

Faites que var_dump soit jolie

J'ai une simple variable $_GET[] query var pour afficher les données de test lors du retrait des requêtes de la base de données.

<?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; ?>

Quand je fais var_dump, comme prévu, c'est cette grosse chaîne de tableau qui est entièrement masquée. Existe-t-il un moyen d’ajouter au moins des sauts de ligne pour cela ou d’afficher le var_dump de manière plus lisible? Je suis ouvert aux suggestions de jQuery sur la manipulation de la chaîne après son affichage.

100
Plummer

J'aime vraiment var_export(). Si vous aimez copier/coller du code, essayez:

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

Ou même quelque chose comme ceci pour la coloration syntaxique des couleurs:

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

Essayez xdebug extension pour php.

Exemple:

<?php var_dump($_SERVER); ?>

Les sorties:

enter image description here

37
Latheesan

Utiliser du code HTML préformaté 

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

J'ai ajouté des réponses à @AbraCadaver . J'ai inclus un script javascript qui supprimera les balises php de démarrage et de fermeture . Nous aurons un fichier de vidage plus joli.

Peut-être que quelqu'un comme ça aussi.

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

Résultat avant:

 enter image description here

Résultat après:

 enter image description here

Maintenant, nous n'avons pas de balises de démarrage et de fermeture php 

6
Muhammad Awais

Si tout se passe bien, vous pouvez souvent essayer le vieux "voir le code source". Parfois, les vidages, les messages et les exceptions semblent ne constituer qu'une longue chaîne lorsqu'il s'avère que les sauts de ligne ne s'affichent tout simplement pas. Surtout les arbres XML.

Sinon, j'ai déjà créé un petit outil appelé InteractiveVarDump dans ce but précis. Cela a certes ses limites, mais cela peut aussi être très pratique parfois. Même s'il a été conçu avec PHP 5 à l'esprit.

3
WoodrowShigeru

Le meilleur moyen et le plus simple d’obtenir Nice var_dump est d’utiliser xDebug (indispensable pour tout développeur php) Installer de manière Debian

Dans la console: apt-get install php-xdebug Après cela, vous devriez ouvrir php.ini (cela dépend de la pile que vous utilisez) pour son fichier /etc/php/7.0/fpm/php.ini.

Rechercher display_errors

set same -> display_errors = On

Vérifiez html_errors dans le même fichier un peu plus bas, il doit aussi être On

Sauvegarder et quitter

Après avoir ouvert /etc/php/7.0/fpm/conf.d/20-xdebug.ini

Et ajoutez à la fin: `` ` Xdebug.cli_color = 1

`` `... Enregistrez et quittez.

De nombreuses autres options et documents disponibles pour xdebug peuvent être créés ici.

https://xdebug.org/docs/

Bonne chance et amusez-vous bien !!!

Résultat

1
Moris Finkel

Vous pouvez utiliser celui-ci debugVar() au lieu de var_dump()

Découvrez: 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

Voici ma fonction pour avoir un joli var_dump. Combiné avec Xdebug , il est très utile d’avoir une meilleure vision de ce que nous faisons du dumping.

J'ai un peu amélioré l'affichage de Xdebug (donner de l'espace, séparer les valeurs, encapsuler de longues variables, etc.).

Lorsque vous appelez la fonction, vous pouvez définir un titre, un arrière-plan, une couleur de texte pour distinguer tous vos var_dump dans une page.

Ou pas ;)

/**
 * 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

Il existe un paquet Symfony pour cela: https://symfony.com/doc/current/components/var_dumper.html .

0
Michael Käfer