Var_dump'ın güzel görünmesini sağlayın


132

$_GET[]Veritabanından sorguları çekerken test verilerini göstermek için basit bir sorgu var setim var.

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

Bunu yaptığımda var_dump, beklendiği gibi hepsi birbirine sıkıştırılmış olan bu büyük dizi dizisi. En azından bunun için satır sonları eklemenin veya var_dumpdaha okunaklı bir şekilde görüntülemenin bir yolu var mı? Yayınlandıktan sonra dizeyi değiştirme konusunda jQuery önerilerine açığım.


48
Evet. echo '<pre>'; var_dump($data); echo '</pre>'.
Amal Murali

9
BU BÜYÜ NEDİR ?!
Plummer

var_masterpiece kullanmaya ne dersiniz? chrome.google.com/webstore/detail/varmasterpiece/…
vijayrana

Soru ilk sorulduğunda bunun web mağazasında olduğunu sanmıyorum. Araştıran herkes için denemeye değer.
Plummer

1
Ben sadece istediğini düşünüyorum print_r($data). php.net/manual/en/function.print-r.php
Drew Baker

Yanıtlar:


369

Gerçekten seviyorum var_export(). Kopyalanabilir / yapıştırılabilir kodu seviyorsanız, şunu deneyin:

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

Veya renk sözdizimi vurgulaması için buna benzer bir şey:

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

İle aynı şeyi yapabilirsiniz print_r(). Çünkü etiketleri var_dump()eklemeniz yeterlidir <pre>:

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

7
Not echo, var_exportve highlight_stringtüm php fonksiyonları ve bir içinde olmak gerek vardır <?php ?>bloğun. Evet, vurgu_dizesi işlev satırının içinde bir <? Php?> Çifti olsa da, dış tarafta da bir çift gereklidir.
BeowulfNode42

Bu var_dump'ın daha kısa bir varyasyonu:var_dump(highlight_string("<?\n". var_export($data, true)));
jhpg

40

Php için xdebug uzantısını deneyin .

Misal:

<?php var_dump($_SERVER); ?>

Çıktılar:

görüntü açıklamasını buraya girin



Var_dump yaparken böyle görüyordum, ama şimdi php 5.5.12 ile wampserver 2.5'e sahip olduğum için formatlanmamış görüyorum. Wampserver'dan başka bir şey yüklemeden nasıl daha önceki fotoğrafınızı görebildim?
Limon

1
Bu kesinlikle çok seksi. Bunun neden doğru çözüm olarak işaretlenmediğinden emin değilim, ancak yükleme işlemi hakkında daha fazla ayrıntı verebilirsiniz. Pencerelerde, bu sadece extension=php_xdebug.dlldeğilzend_extension=/some/really/long/specific/path/xdebug.so
Kraang Prime

22

Önceden biçimlendirilmiş HTML öğesi kullanın

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

10

@AbraCadaver cevaplarına bir ek yaptım. Php başlangıç ​​ve kapanış etiketini silecek bir javascript betiği ekledim. Daha temiz ve güzel bir çöplüğümüz olacak.

Böyle biri de olabilir.

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

Önceki sonuç:

görüntü açıklamasını buraya girin

Sonra Sonuç:

görüntü açıklamasını buraya girin

Artık php başlangıç ​​ve kapanış etiketimiz yok


3

Eğer "hepsi birbirine sıkıştırılmışsa", genellikle ol "kaynak kodunu görüntüle" yi deneyebilirsiniz. Bazen, satır sonlarının görünmediği ortaya çıktığında, dökümler, mesajlar ve istisnalar tek bir uzun dizeden ibaret gibi görünür. Özellikle XML ağaçları.

Alternatif olarak, bir keresinde bu amaç için InteractiveVarDump adında küçük bir araç oluşturdum . Kesinlikle sınırları vardır ama bazen çok uygun olabilir. PHP 5 düşünülerek tasarlanmış olsa bile.


1

Güzel var_dump elde etmenin en iyi ve en kolay yolu xDebug kullanmaktır (herhangi bir php dev için olmalıdır) Debian yolu yüklemesi

Konsolda: Bundan apt-get install php-xdebug sonra /etc/php/7.0/fpm/php.ini için php.ini'yi açmalısınız (kullandığınız yığına bağlıdır)

Aramak display_errors

aynı ayarla -> display_errors = On

html_errorsAynı dosyayı biraz aşağıda kontrol edin , aynı zamandaOn

Kaydet ve çık

Açıldıktan sonra /etc/php/7.0/fpm/conf.d/20-xdebug.ini

Ve sonuna ekleyin: `` `` xdebug.cli_color = 1

`` Kaydet ve çık.

Xdebug için mevcut birçok seçenek ve dokümantasyon burada bulunabilir.

https://xdebug.org/docs/

İyi şanslar ve iyi eğlenceler !!!

Sonuç



1

İşte benim fonksiyonum oldukça var_dump. İle birlikte Xdebug , bu çok biz damping şeyin daha iyi görebilmek için yardımcı olur.

Xdebug görüntüsünü biraz geliştirdim (etrafta biraz boşluk bırak, değerler arasında ayırıcı, uzun değişkenleri sar, vb.).

İşlevi çağırdığınızda, bir sayfadaki tüm var_dump'larınızı ayırt etmek için bir başlık, bir arka plan, bir metin rengi ayarlayabilirsiniz.

Ya da değil ;)

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

}

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

1

Görünüşe göre bunu kopya olarak kapatmak için yeterli temsilcim yok, ancak başka biri bunu yapabilirse bu sayılır. Aynı şeyi PHP'de daha güzel / bilgilendirici bir Var_dump alternatifinde mi yayınladım? ancak zamandan tasarruf etmek adına buraya da kopyalayıp yapıştıracağım:

Buraya başka bir cevap eklemek zorunda kaldım çünkü diğer çözümlerdeki adımları gerçekten uygulamak istemedim. Son derece basittir ve hiçbir uzantı gerektirmez, içerir vb ve tercih ettiğim şeydir. Çok kolay ve çok hızlı.

İlk önce söz konusu değişkeni json_encode:

echo json_encode($theResult);

Http://jsoneditoronline.org/ adresindeki JSON Düzenleyicisine aldığınız sonucu kopyalayın, sadece sol taraftaki bölmeye kopyalayın, Kopyala> 'yı tıklayın ve JSON'u gerçekten güzel bir ağaç biçiminde yazdırır.

Her biri için, ama umarım bu, bazılarının bir tane daha güzel seçeneği olmasına yardımcı olur! :)



-2

Güzel bir debug_displayşekilde yazdırabilen, dizileri, nesneleri ve dosya bilgilerini yazabilen bir işlev ( ) yazdım .

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

-12

kullanım

echo nl2br(var_dump());

Bu çalışmalı ^^


9
var_dump hiçbir şey döndürmez, doğrudan çıktı verir.
AbraCadaver
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.