Alternatif Var_dump yang lebih cantik / informatif di PHP? [Tutup]

130

Setiap programmer PHP yang layak memiliki print_ratau var_dumpbungkus yang mereka gunakan, suka dan tetapkan tombol pintas, mengapa kita tidak membagikan yang favorit kami .

Raveren
sumber
39
saya hanya menggunakan echo '<pre>'; print_r ($ var); keluar; Aku bahkan tidak menutupnya. Saya kira saya tidak layak
Funky Dude
Saya mengedit tautan untuk menunjuk ke github, tempat saya melanjutkan pengembangan Kint, dan jika Anda masih memiliki masalah dengan itu, tolong beri tahu saya dengan cara apa pun.
raveren
1
Hei, Kint itu keren! Itu hanya menyelamatkan hari saya.
István Ujj-Mészáros
2
Mengapa pertanyaan yang 100% pemberitahuan iklan dari suatu program menjadi versi "i make var_dump ()" saya sendiri ?? Pertanyaan pertama adalah mengapa iklan produk diizinkan sebagai pertanyaan.
m3nda
11
Karena saya membuat alat lebih dari setahun kemudian setelah mengajukan pertanyaan. Saya tidak tahu apa yang mengganggu Anda, saya menciptakan alat open source 10k + line matang dan saya terus meningkatkannya bertahun-tahun kemudian. Saya memberikan jawaban saya sendiri dalam pertanyaan - seperti tradisi dalam SO.
raveren

Jawaban:

70

Setahun penuh waktu dan tenaga setelah menanyakan hal ini, saya akhirnya membuka versi var_dump versi saya, Kint. Baca tentang itu di halaman proyek , atau langsung di github .

Berikut screenshotnya:

kint

Maaf untuk colokannya :)


EDIT: Saya hanya ingin mengingatkan para komentator, bahwa ini bukan forum dukungan, jika Anda mengalami masalah / ingin fitur, silakan ajukan masalah . Dukungan meminta komentar akan ditandai untuk dihapus.

gua
sumber
saya harus mengubah ukuran font, dan mempercantik kode CSS, tetapi kerja bagus, saya menyukainya ... berasal dari pengguna Krumo yang lama
Quamis
1
perubahan apa yang Anda lakukan, jika Anda percaya ini merupakan peningkatan, Anda dapat mengirim saya perubahan ke [email protected]
raveren
saya terbiasa dengan Krumo dan saya ingin font yang lebih kecil, dan saya juga mempercantik kode CSS. Tidak ada yang bisa disebut perbaikan aktual, lebih seperti kebiasaan lama :)
Quamis
baik idenya adalah bahwa css seharusnya dikompresi bersama dengan js sehingga mengganggu sesedikit mungkin dengan output aktual. Tentu saja, cukup lekukan dari sumber yang dihasilkan direncanakan juga, tapi saya saat ini tidak memiliki waktu untuk mencurahkan untuk Kint ..
raveren
2
Sama seperti contoh, Kint menunjukkan variabel yang dilindungi dan pribadi jika Anda membuang objek, krumo tidak (karena hanya yang pertama menggunakan kelas refleksi saya berasumsi). Secara umum saya menemukan Kint lebih unggul; walaupun saya juga harus men-tweak css untuk membuatnya lebih dapat digunakan (font besar itu tidak bekerja dengan baik ketika membuang banyak properti yang disarangkan). Oh dan kode di belakangnya tidak berantakan, sesuatu yang tidak bisa dikatakan tentang Krumo (penulis Krumo maaf!)
Mahn
45

Pilihan saya adalah var_dumpfungsi, yang disediakan oleh ekstensi Xdebug : cukup instal ekstensi (mudah, baik di windows dan Linux) , dan var_dumpdapatkan output yang lebih baik:

  • formasi yang lebih baik
    • HTML
    • warna
  • dan Anda memiliki opsi untuk menyesuaikan seberapa banyak informasi harus ditampilkan

Dan tangkapan layar cepat:

xdebug


Dan, tentu saja, Xdebug membawa banyak hal berguna lainnya, seperti debugging jarak jauh (yaitu debugging grafis aplikasi PHP Anda, misalnya di Eclipse PDT) , pembuatan profil, ...

Pascal MARTIN
sumber
1
Saya perlu menggunakan kelas format xdebug ini di host bersama. Apakah ada cara untuk memasukkannya ke dalam proyek pribadi saya?
Anyul Rivas
1
Jika Anda bukan admin (root) dari server Anda, kemungkinan besar Anda tidak akan dapat menginstal ekstensi PHP (Saya belum pernah melihat layanan hosting bersama yang akan menginstal satu untuk menginstal ekstensi PHP) ; jadi, tidak, Anda tidak akan dapat menggunakan Xdebug (lagi pula, menginstalnya pada server produksi umumnya bukan ide yang baik: itu adalah ekstensi debugging, setelah semua) ; Anda harus kembali ke implementasi berbasis PHP dari fungsi variabel-outputting (lihat beberapa jawaban lain)
Pascal MARTIN
1
ya, saya hanya perlu kelas untuk mengirim sendiri beberapa output ketika kesalahan terjadi.
Anyul Rivas
34

Saya menulis sendiri: REF ( demo ):

r () keluaran

Rencananya adalah menambahkan rendering hanya teks, dan menampilkan info tentang ekspresi input seperti yang dilakukan Kint ...

pantat bagus
sumber
4
Kerja
2
REF luar biasa, penuh warna, cepat. Saya menggunakannya sepanjang waktu.
Marty McGee
2
Alat hebat, saya baru saja beralih ke sana. Terima kasih!
Andris
Beberapa orang menggunakan komposer, yah ... bukan saya. Jika Anda membuat dllsaya akan menggunakan "debug" ini. Terima kasih, dan kerja bagus!
Alex
27

Ini milik saya, yang saya gunakan sebaris, sangat berguna:

$pretty = function($v='',$c="&nbsp;&nbsp;&nbsp;&nbsp;",$in=-1,$k=null)use(&$pretty){$r='';if(in_array(gettype($v),array('object','array'))){$r.=($in!=-1?str_repeat($c,$in):'').(is_null($k)?'':"$k: ").'<br>';foreach($v as $sk=>$vl){$r.=$pretty($vl,$c,$in+1,$sk).'<br>';}}else{$r.=($in!=-1?str_repeat($c,$in):'').(is_null($k)?'':"$k: ").(is_null($v)?'&lt;NULL&gt;':"<strong>$v</strong>");}return$r;};

echo $pretty($some_variable);
Guillermo Phillips
sumber
2
Suka fungsi ini - mudah dan jelas dan apakah saya menyebutkan sangat mudah :)
derekdreery
Terima kasih. Saya menggunakannya sepanjang waktu. Seharusnya benar-benar dibangun ke dalam PHP. Anda bisa memasukkan format Anda sendiri, menggunakan parameter kedua. mis. echo $ pretty ($ some_variable, "-");
Guillermo Phillips
7
Ini dengan indah menggabungkan semua fitur terburuk dari print_r, var_dump dan var_export. Tidak ada html yang lolos, hanya menerima parameter tunggal, hang pada rekursi, tidak dapat mengembalikan output, dan hanya untuk melengkapi, itu benar - benar tidak dapat dibaca . Saya tidak ingin menjadi orang brengsek, tetapi komentar itu membuatnya tampak begitu sempurna.
raveren
Terima kasih atas komentar Anda @Raveren. Jika Anda bisa lebih spesifik, maka saya akan meningkatkan jawaban saya.
Guillermo Phillips
2
IMO solusi jalur tunggal terbaik adalah sederhana function pretty(){echo'<pre>';foreach(func_get_args()as $arg){ob_start();var_dump($arg);echo htmlentities(ob_get_clean())."\n#####\n#####\n\n";}die;}. Var_dump adalah fungsi yang sangat verbose, ia menangani semua kasus tepi PHP (yang ada BANYAK) dan 100% stabil, meskipun tidak dapat dibaca. Tetapi pada akhirnya, jika Anda menemukan implementasi Anda yang terbaik untuk Anda, itulah yang harus Anda gunakan.
raveren
16

Anda mencari Krumo ( Peringatan, lansiran Chrome untuk Malware ).

Sederhananya, Krumo adalah pengganti print_r () dan var_dump (). Menurut definisi, Krumo adalah alat debugging (awalnya untuk PHP4 / PHP5, sekarang hanya untuk PHP5), yang menampilkan informasi terstruktur tentang variabel PHP apa pun.

Pekka
sumber
Ini brilian! Terima kasih. +1
the_drow
2
ketika saya mencobanya, itu rusak. Saya melaporkannya, tetapi tidak ada balasan & tidak ada versi baru
Mawg mengatakan mengembalikan Monica
2
@Pekka Tautan ini memberikan peringatan malware di Chrome.
Tim Post
Hari ini krumo telah diperbarui oleh orang ini github.com/mmucklo/krumo (tapi Kint mungkin lebih baik, lebih detail)
lolesque
9

Saya suka Firephp plus firebug

  • Itu menulis informasi logging menggunakan header, sehingga tidak merusak AJAX.
  • Memberi Anda representasi grafis yang sangat bagus dari variabel / objek yang Anda catat
  • Dapat menampilkan nama file dan nomor baris di mana setiap pernyataan log terjadi
  • Mudah digunakan dalam proyek Anda, baik dengan API prosedural atau berorientasi objek
Johrn
sumber
8

Solusi saya (sebagian) untuk ini adalah cukup tambahkan fungsi seperti ini (menggunakan Google Chrome):

<?
function console_dump($value)
{ 
?>
<script>
    console.log(<? echo json_encode($value); ?>);
</script>
<?
}
?>

Tekan Ctrl + Shift + J (membuka konsol), dan Anda dapat menemukan di sana struktur JSON. Bahkan lebih berguna untuk mencetak respons JSON dari kursus.

Tim
sumber
8

Contoh lengkap tentang apa yang saya gunakan ...

<pre>

<?php


//*********** Set up some sample data

$obj = new stdClass;
$obj->a=123;
$obj->pl=44;
$obj->l=array(31,32);

$options = array(
  'Orchestra'=>array(1=>'Strings', 8=>'Brass', 9=>$obj, 3=>'Woodwind', 16=>'Percussion'),
  2=>'Car',
  4=>'Bus',
  'TV'=>array(21=>'Only Fools', 215=>'Brass Eye', 23=>'Vic Bob',44=>null, 89=>false));


//*********** Define the function

function dump($data, $indent=0) {
  $retval = '';
  $prefix=\str_repeat(' |  ', $indent);
  if (\is_numeric($data)) $retval.= "Number: $data";
  elseif (\is_string($data)) $retval.= "String: '$data'";
  elseif (\is_null($data)) $retval.= "NULL";
  elseif ($data===true) $retval.= "TRUE";
  elseif ($data===false) $retval.= "FALSE";
  elseif (is_array($data)) {
    $retval.= "Array (".count($data).')';
    $indent++;
    foreach($data AS $key => $value) {
      $retval.= "\n$prefix [$key] = ";
      $retval.= dump($value, $indent);
    }
  }
  elseif (is_object($data)) {
    $retval.= "Object (".get_class($data).")";
    $indent++;
    foreach($data AS $key => $value) {
      $retval.= "\n$prefix $key -> ";
      $retval.= dump($value, $indent);
    }
  }
  return $retval;
}


//*********** Dump the data

echo dump($options);

?>
</pre>

Keluaran ...

Array (4)
 [Orchestra] = Array (5)
 |   [1] = String: 'Strings'
 |   [8] = String: 'Brass'
 |   [9] = Object (stdClass)
 |   |   a -> Number: 123
 |   |   pl -> Number: 44
 |   |   l -> Array (2)
 |   |   |   [0] = Number: 31
 |   |   |   [1] = Number: 32
 |   [3] = String: 'Woodwind'
 |   [16] = String: 'Percussion'
 [2] = String: 'Car'
 [4] = String: 'Bus'
 [TV] = Array (5)
 |   [21] = String: 'Only Fools'
 |   [215] = String: 'Brass Eye'
 |   [23] = String: 'Vic Bob'
 |   [44] = NULL
 |   [89] = FALSE
Anthony Scaife
sumber
1
Saya mengubah \ n menjadi PHP_EOL dan ini berfungsi dengan baik ketika menggunakan php dari CMD window
iewebguy
7

Ini milik saya:

class sbwDebug
{
    public static function varToHtml($var = '', $key = '')
    {
        $type = gettype($var);
        $result = '';

        if (in_array($type, ['object', 'array'])) {
            $result .= '
        <table class="debug-table">
            <tr>
            <td class="debug-key-cell"><b>' . $key . '</b><br/>Type: ' . $type . '<br/>Length: ' . count($var) . '</td>
            <td class="debug-value-cell">';

            foreach ($var as $akey => $val) {
                $result .= sbwDebug::varToHtml($val, $akey);
            }
            $result .= '</td></tr></table>';
        } else {
            $result .= '<div class="debug-item"><span class="debug-label">' . $key . ' (' . $type . '): </span><span class="debug-value">' . $var . '</span></div>';
        }

        return $result;
    }
}

Ditata dengan:

table.debug-table {
  padding: 0;
  margin: 0;
  font-family: arial,tahoma,helvetica,sans-serif;
  font-size: 11px;
}

td.debug-key-cell {
  vertical-align: top;
  padding: 3px;
  border: 1px solid #AAAAAA;
}

td.debug-value-cell {
  vertical-align: top;
  padding: 3px;
  border: 1px solid #AAAAAA;
}

div.debug-item {
  border-bottom: 1px dotted #AAAAAA;
}

span.debug-label {
  font-weight: bold;
}
Damon
sumber
2
Sebenarnya tidak buruk. Mungkin akan terpilih lebih banyak seandainya Anda menunjukkan contoh output.
Mawg mengatakan mengembalikan Monica
@acSlater Berfungsi untuk saya, Anda hanya perlu membuat sbwDebugkelas yang ia lupa posting dan memasukkan fungsi di dalamnya.
Dennis98
6

Saya baru-baru ini mengembangkan ekstensi krom gratis (sedang dalam proses) untuk mempercantik var dumps saya tanpa perpustakaan, tanpa tag pra dan tidak ada instalasi untuk setiap aplikasi. Semua dilakukan dengan JavaScript dan regEx. Yang harus Anda lakukan adalah menginstal ekstensi dan kebaikan Anda. Saya sedang mengerjakan versi Firefox juga. Inilah halaman GitHub. Saya berharap segera tersedia di webstore chrome dan firefox!

https://github.com/alexnaspo/var_dumpling

Berikut adalah contoh output:

Contoh output

Alex Naspo
sumber
6
kawan yang baik! baru saja mengunduh ekstensi Anda dan berfungsi dengan baik! Terima kasih!
coryj
5
Bung ... terima kasih. Saya telah mencari sesuatu seperti ini untuk sementara waktu
broadbent
1
Tidak nyata Pilihan terbaik!
Christian
Mencoba dengan Firefox 15, katanya tidak kompatibel. Adakah peluang untuk melewati ini?
cyberfly
1
Ini indah, seandainya aku menemukannya lebih cepat!
3

Tracy memiliki output collapsable yang indah menggunakan fungsi dump () .

rikiless
sumber
2

Perpustakaan-perpustakaan mewah itu hebat ... kecuali overhead. Jika Anda ingin var_dump sederhana dan cantik yang mengambil parameter tak terbatas, coba fungsi saya. Itu menambahkan beberapa HTML sederhana. Atribut data ditambahkan juga, jika Anda menggunakan HTML5, versi yang lebih rendah hanya akan mengabaikannya, tetapi membuatnya mudah untuk membuka elemen di konsol browser dan mendapatkan sedikit lebih banyak info jika apa yang Anda lihat di layar tidak cukup.

Tata letaknya sangat sederhana, tanpa overhead. Memberikan banyak info untuk setiap parameter termasuk hal-hal seperti gettypedan bahkan classnama untuk Object dumps (termasuk XML). Sudah dicoba dan benar, saya sudah menggunakannya selama bertahun-tahun.

function preDump() {    //  use string "noEcho" to just get a string return only
    $args = func_get_args();
    $doEcho = TRUE; $sb;
    if ($args) {
        $sb = '<div style="margin: 1em 0;"><fieldset style="display:inline-block;padding:0em 3em 1em 1em;"><legend><b>preDump: '.count($args).' Parameters Found.</b></legend>';
        foreach (func_get_args() as $arg) {
            if (gettype($arg) == 'string') if ($arg == 'noEcho') { $doEcho = FALSE; $sb = preg_replace('/(preDump: )[0-9]+/', 'preDump: '.(count($args)-1), $sb); continue; }
            $sb .= '<pre data-type="'.gettype($arg).'"';
            switch (gettype($arg)) {
                case "boolean":
                case "integer":
                    $sb .= ' data-dump="json_encode"><p style="border-bottom:1px solid;margin:0;padding:0 0 0 1em;"><b>gettype('.gettype($arg).')</b></p><p>';
                    $sb .= json_encode($arg);
                    break;
                case "string":
                    $sb .= ' data-dump="echo"><p style="border-bottom:1px solid;margin:0;padding:0 0 0 1em;"><b>gettype('.gettype($arg).')</b></p><p>';
                    $sb .= $arg;
                    break;
                default:
                    $sb .= ' data-dump="var_dump"';
                    if (is_object($arg)) $sb .= 'data-class="'.get_class($arg).'"';
                    $sb .= '><p style="border-bottom:1px solid;margin:0;padding:0 0 0 1em;"><b>gettype('.gettype($arg).')';
                    if (is_object($arg)) $sb .= ' ['.get_class($arg).']';
                    $sb .= '</b></p><p>';
                    ob_start();
                    var_dump($arg);
                    $sb .= ob_get_clean();
                    if (ob_get_length()) ob_end_clean();
            }
            $sb .= '</p></pre>';
        }
        $sb .= '</fieldset></div>';
    }
    else {
        $sb = '<div style="margin: 1em 0;"><fieldset style="display:inline-block;"><legend><b>preDump: [ERROR]</b></legend><h3>No Parameters Found</h3></fieldset></div>';
    }
    if ($doEcho) echo($sb);
    return $sb;
}

Dan Jika Anda menggunakan Codeigniter, tambahkan juga CI Anda SANGAT HANYA. Pertama, pergi ke application/config/autoload.phpdan pastikan helper 'string'sudah menyala.

$autoload['helper'] = array( 'string' ); 

Kemudian hanya pergi membuat sebuah file bernama MY_string_helper.phpdalam application/helpersdan sederhana insert fungsi di khas ifpernyataan untuk check keberadaan.

<?php  if (!defined('BASEPATH')) exit('No direct script access allowed');
    if (!function_exists('preDump')) {
        function preDump() {
            ...
        }
    }
//  DON'T CLOSE PHP

| ATAU |, jika Anda ingin mengambil arah yang berbeda.

Cuplikan berikut ini sama dengan di atas, kecuali akan menunjukkan variabel Anda di konsol browser. Ini kadang-kadang membuatnya lebih mudah untuk men-debug panggilan objek sql dan panggilan array dan objek lainnya di mana Anda kehilangan nama kunci atau apa pun.

function consoleDump() {    //  use string "noEcho" to just get a string return only
    $args = func_get_args();
    $doEcho = TRUE; $sb;
    if ($args) {
        $sb = '<script type="text/javascript">console.log("<" + new Array('.(count($args) < 10 ? '49': '48').').join("-") + "[consoleDump: '.count($args).' items]" + new Array(50).join("-") + ">"); console.log([';

        foreach (func_get_args() as $i => $arg) {
            if (gettype($arg) == 'string') if ($arg == 'noEcho') { $doEcho = FALSE; $sb = preg_replace('/(consoleDump: )[0-9]+/', 'consoleDump: '.(count($args)-1), $sb); continue; }
            $sb .= '{ "type": "'.gettype($arg).'", ';
            switch (gettype($arg)) {
                case "boolean":
                case "integer":
                case "string":
                    $sb .= '"value": '.json_encode($arg);
                    break;
                default:
                    $sb .= '"value": '.json_encode($arg);
                    if (is_object($arg) || is_array($arg)) $sb .= ', "count": '.json_encode(count((array)$arg));
                    if (is_object($arg)) $sb .= ', "objectClass": "'.get_class($arg).'"';
            }
            $sb .= '}';
            if ($i < count($args)-1) $sb .= ', ';
        }
        $sb .= ']); console.log("<" + new Array(120).join("-") + ">"); </script>';
    }
    else {
        $sb = '<script type="text/javascript">console.log("<" + new Array(120).join("-") + ">");console.log("consoleDump: [ERROR] No Parameters Found");console.log("<" + new Array(120).join("-") + ">");</script>';
    }
    if ($doEcho) echo($sb);
    return $sb;
}

Bekerja dengan segalanya!

consoleDump($simpXMLvar, $_SESSION, TRUE, NULL, array( 'one' => 'bob', 'two' => 'bill' ), (object)array( 'one' => 'bob', 'two' => 'bill' ));


<------------------------------------------------[consoleDump: 6 items]------------------------------------------------->
[Object, Object, Object, Object, Object, Object] 
// This drops down to show your variables in JS objects, like:
    0: Object
        count: 4
        objectClass: "SimpleXMLElement"
        type: "object"
        value: Object
        __proto__: Object
        // ...etc...
<-----------------------------------------------------------------------------------------------------------------------> 
SpYk3HH
sumber
1
Mengapa orang harus khawatir tentang penurunan kinerja yang diabaikan dalam alat pengembangan? Fungsi ini secara harfiah echo '<pre>';var_dump($var);echo '</pre>';ditambah beberapa teks bernilai tambah nol.
raveren
@Raveren ya kecuali preDump('value', TRUE, array( 'bob => 'bill' ), (object)array( 'bob => 'bill' )' is quick and easy and gives a nice layout visually in the browser that shows each variable passed in it's own "area" with a type label, thus making debugging quick and easy. And since it's a snippet i keep in my IDE's toolbox, i can recall it with ease on any needed page or while working with any library. But sure, it's just an echo 'pre'; var_dump` dengan beberapa simple htmldi sekitarnya, bukan 0-nilai tambah teks. lol kik. Jika Anda tidak menyukainya, jangan gunakan itu. Hanya sebuah saran.
SpYk3HH
@Raveren Dan jika Anda suka itu ... Anda benar-benar akan menyukai pembaruan saya: P
SpYk3HH
1

PHP Array Beautifier Alat sederhana ini mengambil output array atau objek dalam PHP, seperti pernyataan print_r () dan memformatnya dalam kode warna untuk dengan mudah membaca data Anda. http://phillihp.com/toolz/php-array-beautifier/

Ganbolor Buddorj
sumber
tidak bekerja dengan keluaran var_dump, memecah tanda kutip, terlihat sangat membingungkan untuk kesedihan yang lebih besar.
raveren
1

Versi lain yang dikembangkan di rumah:

http://github.com/perchten/neat_html

Saya suka berpikir itu cukup fleksibel. Ini tidak bertujuan untuk lingkungan output tertentu tetapi memiliki banyak argumen opsional yang dapat Anda tentukan mengapa mengubah output / cetak atau perilaku, serta beberapa pengaturan yang persisten.

Alastair Brayne
sumber
1

Jika Anda berurusan dengan array yang sangat besar di PHP, fungsi ini dapat membantu:

function recursive_print ($varname, $varval) {
  if (! is_array($varval)):
    print $varname . ' = ' . var_export($varval, true) . ";<br>\n";
  else:
    print $varname . " = array();<br>\n";
    foreach ($varval as $key => $val):
      recursive_print ($varname . "[" . var_export($key, true) . "]", $val);
    endforeach;
  endif;
}

Ini pada dasarnya membuang seluruh array di mana setiap elemen berada di baris terpisah, yang bermanfaat untuk menemukan jalur penuh yang tepat untuk elemen-elemen tertentu.

Contoh output:

$a = array();
$a[0] = 1;
$a[1] = 2;
$a[2] = array();
$a[2][0] = 'a';
$a[2][1] = 'b';
$a[2][2] = 'c';

Lihat: Bagaimana cara mengekspor array PHP di mana setiap pasangan kunci-nilai berada di baris terpisah?

kenorb
sumber
1

Saya terkejut tidak ada yang menyebutkan kode termudah (meskipun tidak terlalu cantik). Jika Anda hanya ingin mendapatkan hasil yang dapat dibaca (tanpa warna atau lekukan), sederhana di <pre>sekitar var_dumpkarya, seperti pada:

echo "<pre>";
var_dump($myvariable);
echo "</pre>";

Tidak bisa mendapatkan overhead yang lebih rendah dari ini!

Sablefoste
sumber
0

Pilihan saya adalah debug dari https://github.com/hazardland/debug.php yang merupakan pustaka dengan hanya berisi fungsi tunggal bernama debug (Anda hanya dapat menyalin fungsi itu di proyek Anda atau di perpustakaan Anda) . Keluaran debug () khas html terlihat seperti ini:

masukkan deskripsi gambar di sini

Tetapi Anda dapat menampilkan data sebagai teks biasa dengan fungsi yang sama juga (dengan 4 spasi indentasi tab) seperti ini (dan bahkan mencatatnya dalam file jika diperlukan):

string : "Test string"
boolean : true
integer : 17
float : 9.99
array (array)
    bob : "alice"
    1 : 5
    2 : 1.4
object (test2)
    another (test3)
        string1 : "3d level"
        string2 : "123"
        complicated (test4)
            enough : "Level 4"
BIOHAZARD
sumber
0

TVarDumper

Ini adalah alat yang hebat yang dimaksudkan untuk menggantikan fungsi PHP buggy var_dumpdan print_r, karena dapat dengan benar mengidentifikasi objek yang direferensikan secara rekursif dalam struktur objek yang kompleks. Ini juga memiliki kontrol kedalaman rekursif untuk menghindari tampilan rekursif tak terbatas dari beberapa variabel khusus.

Lihat: TVarDumper.php.


Untuk solusi alternatif lain yang memberikan lebih banyak kelebihan var_dumpdan print_rdan dapat mendukung referensi melingkar, silakan periksa: Menggunakan print_r dan var_dump dengan referensi melingkar .


Untuk lebih banyak ide, periksa juga: Bagaimana Anda men-debug skrip PHP?

kenorb
sumber
0

Milik saya, lebih sederhana, bagi saya saya tidak memiliki banyak pengetahuan / waktu untuk mengubah infrastruktur menginstal xdebug, dll.

Dan dalam kasus lain, Anda tidak perlu banyak untuk situs web WP sederhana misalnya

Jadi saya menggunakan:

highlight_string("\n<?" . var_export($var, true) . "?>\n");

itu sangat membantu saya.

tetapi karena saya lebih suka Lingkungan DevConsole saya menggunakan fungsi yang luar biasa tapi sederhana ini:

https://codeinphp.github.io/post/outputting-php-to-browser-console/

Tweak kecil:

<?php 

/**
 * Logs messages/variables/data to browser console from within php
 *
 * @param $name: message to be shown for optional data/vars
 * @param $data: variable (scalar/mixed) arrays/objects, etc to be logged
 * @param $jsEval: whether to apply JS eval() to arrays/objects
 *
 * @return none
 * @author Sarfraz
 */
function logConsole($name, $data = NULL, $jsEval = FALSE)
{
     if (! $name) return false;

     $isevaled = false;
     $type = ($data || gettype($data)) ? 'Type: ' . gettype($data) : '';

     if ($jsEval && (is_array($data) || is_object($data)))
     {
          $data = 'eval(' . preg_replace('#[\s\r\n\t\0\x0B]+#', '', json_encode($data)) . ')';
          $isevaled = true;
     }
     else
     {
          $data = json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
     }

     # sanitalize
     $data = $data ? $data : '';
     $search_array = array("#'#", '#""#', "#''#", "#\n#", "#\r\n#");
     $replace_array = array('"', '', '', '\\n', '\\n');
     $data = preg_replace($search_array,  $replace_array, $data);
     $data = ltrim(rtrim($data, '"'), '"');
     $data = $isevaled ? $data : ($data[0] === "'") ? $data : "'" . $data . "'";

$js = <<<JSCODE
\n<script>
// fallback - to deal with IE (or browsers that don't have console)
if (! window.console) console = {};
console.log = console.log || function(name, data){};
// end of fallback

console.log('===== PHP Dump =====');
console.log('$name');
console.log('$type');
console.log($data);
console.log('===== / PHP Dump =====');
console.log('\\n');
</script>
JSCODE;

     echo $js;
} # end logConsole
Locke
sumber
0

Pilihan lain adalah

composer require symfony/var-dumper --save-dev

Kemudian dalam file Anda, Anda hanya menggunakan dump($var) dan Anda akan berakhir dengan output seperti itumasukkan deskripsi gambar di sini

GardenRouteGold
sumber
0

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