Buat var_dump terlihat cantik

132

Saya memiliki $_GET[]set var kueri sederhana untuk menampilkan data pengujian saat menarik kueri dari DB.

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

Ketika saya melakukannya var_dump, seperti yang diharapkan, ini adalah string array besar yang semuanya dihancurkan bersama. Apakah ada cara untuk menambahkan jeda baris setidaknya untuk ini atau menampilkan dengan var_dumpcara yang lebih mudah dibaca? Saya terbuka untuk saran jQuery tentang memanipulasi string setelah diposkan.

Plummer
sumber
48
Ya. echo '<pre>'; var_dump($data); echo '</pre>'.
Amal Murali
9
APA SIHIR INI?
Plummer
bagaimana dengan menggunakan var_masterpiece. chrome.google.com/webstore/detail/varmasterpiece/…
vijayrana
Saya tidak berpikir ini ada di webstore ketika pertanyaan awalnya diajukan. Layak dicoba bagi siapa pun yang melihatnya.
Plummer
1
Saya pikir Anda hanya ingin print_r($data). php.net/manual/en/function.print-r.php
Drew Baker

Jawaban:

369

Saya sangat suka var_export(). Jika Anda suka kode salin / tempel, coba:

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

Atau bahkan sesuatu seperti ini untuk penyorotan sintaksis warna:

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

Anda dapat melakukan hal yang sama dengannya print_r(). Untuk var_dump()Anda hanya perlu menambahkan <pre>tag:

echo '<pre>';
var_dump($data);
echo '</pre>';
AbraCadaver
sumber
7
Perhatikan bahwa echo,, var_exportdan highlight_stringsemua fungsi php dan harus di dalam <?php ?>blok. Ya meskipun garis fungsi highlight_string memiliki pasangan <? Php?> Di dalamnya, sepasang juga diperlukan di luar.
BeowulfNode42
Variasi yang lebih pendek dari var_dump ini:var_dump(highlight_string("<?\n". var_export($data, true)));
jhpg
40

Coba ekstensi xdebug untuk php.

Contoh:

<?php var_dump($_SERVER); ?>

Output:

masukkan deskripsi gambar di sini

Bubut
sumber
7
Pikiran Anda, xdebug melakukan ALLOT lebih dari sekedar var_dump cantik :)
Latheesan
Saya pernah melihat seperti ini ketika melakukan var_dump, tetapi sekarang saya memiliki wampserver 2.5 dengan php 5.5.12. Saya melihatnya tidak diformat. Kenapa saya bisa melihat seperti foto Anda sebelumnya, tanpa menginstal apa pun selain wampserver?
Limon
1
Ini pasti sangat seksi. Tidak yakin mengapa ini tidak ditandai sebagai solusi yang benar, tetapi Anda dapat memberikan detail lebih lanjut tentang proses instalasi. Di windows, itu hanya extension=php_xdebug.dll, tidakzend_extension=/some/really/long/specific/path/xdebug.so
Kraang Prime
22

Gunakan elemen HTML yang telah diformat sebelumnya

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

Saya telah membuat tambahan untuk jawaban @AbraCadaver. Saya telah memasukkan skrip javascript yang akan menghapus tag awal dan penutup php. Kami akan membersihkan lebih banyak sampah cantik.

Mungkin seseorang seperti ini juga.

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

Hasil sebelum:

masukkan deskripsi gambar di sini

Hasil setelah:

masukkan deskripsi gambar di sini

Sekarang kami tidak memiliki tag pembuka dan penutup php

Muhammad Awais
sumber
3

Jika "semuanya dihancurkan bersama", Anda sering dapat mencoba "lihat kode sumber". Kadang-kadang dump, pesan, dan pengecualian tampak seperti hanya satu string panjang ketika ternyata garis terputus tidak muncul. Terutama pohon XML.

Atau, saya pernah membuat alat kecil kecil yang disebut InteractiveVarDump untuk tujuan ini. Tentu saja ada batasnya tetapi terkadang juga bisa sangat nyaman. Meskipun dirancang dengan PHP 5 dalam pikiran.

WoodrowShigeru
sumber
1

Cara terbaik apa dan termudah untuk mendapatkan var_dump yang bagus adalah menggunakan xDebug (harus dimiliki oleh php dev) Cara instal Debian

Di konsol: apt-get install php-xdebug setelah itu Anda harus membuka php.ini (tergantung pada tumpukan yang Anda gunakan) untuk itu /etc/php/7.0/fpm/php.ini

Pencarian untuk display_errors

atur sama -> display_errors = On

Periksa html_errorsfile yang sama sedikit di bawah, itu juga harusOn

Simpan dan keluar

Setelah terbuka /etc/php/7.0/fpm/conf.d/20-xdebug.ini

Dan tambahkan sampai akhir: `` `xdebug.cli_color = 1

`` `Simpan dan keluar.

Banyak opsi dan dokumentasi lain yang tersedia untuk xdebug dapat ditemukan di sini.

https://xdebug.org/docs/

Semoga berhasil dan selamat bersenang - senang !!!

Hasil

Moris Finkel
sumber
1

Inilah fungsi saya untuk memiliki var_dump yang cantik. Dikombinasikan dengan Xdebug , sangat membantu untuk memiliki pandangan yang lebih baik tentang apa yang kita buang.

Saya sedikit meningkatkan tampilan Xdebug (memberikan ruang sekitar, pemisah antara nilai, bungkus variabel panjang, dll).

Ketika Anda memanggil fungsi, Anda dapat mengatur judul, latar belakang, warna teks untuk membedakan semua var_dump Anda di halaman.

Atau tidak ;)

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

}
Arno
sumber
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();
}
Mr.Hosseini
sumber
1

Saya tampaknya tidak memiliki cukup perwakilan untuk menutup ini sebagai duplikat, tetapi itu adalah salah satu jika orang lain dapat melakukannya. Saya memposting hal yang sama di Alternatif Var_dump yang lebih cantik / informatif di PHP? tetapi demi menghemat waktu, saya juga akan menyalin / menempelkannya di sini:

Saya harus menambahkan jawaban lain di sini karena saya tidak benar-benar ingin melalui langkah-langkah dalam solusi lain. Ini sangat sederhana dan tidak memerlukan ekstensi, termasuk dll dan itulah yang saya sukai. Sangat mudah dan sangat cepat.

Pertama, cukup json_encode variabel yang dimaksud:

echo json_encode($theResult);

Salin hasil yang Anda dapatkan ke Editor JSON di http://jsoneditoronline.org/ cukup salin ke panel sebelah kiri, klik Salin> dan cukup cetak JSON dalam format pohon yang sangat bagus.

Untuk masing-masing, tetapi mudah-mudahan ini membantu beberapa orang lain memiliki satu lagi opsi bagus! :)

zpert
sumber
-2

Saya menulis fungsi ( debug_display) yang dapat mencetak, array, objek, dan info file dengan cara yang cantik.

<?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);
}
Ehsan Aghaei
sumber
-12

Menggunakan

echo nl2br(var_dump());

Ini seharusnya bekerja ^^

Christine
sumber
9
var_dump tidak mengembalikan apa-apa, itu output langsung.
AbraCadaver