Terlalu banyak data dengan var_dump di symfony2 doktrine2


100

Saya memiliki sekitar 40 entitas dan banyak hubungan dua arah. Setiap kali saya menggunakan var_dump ($ user) atau entitas apa pun, browser saya dimuat dengan terlalu banyak data array dan variabel maka itu hanya macet.

saya ingin apa masalahnya.

Data sedang dimasukkan dengan baik. Dapatkah saya menyebabkan masalah dalam produksi.


Browser apa yang sedang kita bicarakan?
Hantu Madara

3
Apakah Anda menggunakan xdebug? Jika tidak, pertimbangkan untuk menggunakannya dan alih-alih var_dump gunakan saja langkah debugger dengan IDE seperti Ecplipse, Netbeans atau PHPStorm. Semua ini akan menampilkan data variabel dengan baik.
hakre

Apa yang Anda maksud dengan "mogok" - apakah aplikasi browser (atau tab) ditutup, atau tidak menampilkan hasil, atau halaman terhenti?
Yuriy

browser saya menampilkan halaman data variabel yang sangat panjang dengan semua entitas saya dan semua itu. Sepertinya itu masuk dalam lingkaran yang tidak pernah berakhir. saya mencoba botf firefox dan chrome. jika saya mencoba kelas lain yang tidak memiliki hubungan maka berfungsi dengan baik tetapi dengan banyak hubungan itu membekukan komputer. saya harus mengakhiri tugas itu
Mirage

Saya memiliki kelas sederhana dan browser saya juga mogok. Saya benci semua default yang terbelakang ini.
ChocoDeveloper

Jawaban:


221

Ganti var_dump () dengan metode debug dump () yang disediakan oleh Doctrine Common .

\Doctrine\Common\Util\Debug::dump($user);

Ini berfungsi untuk objek tunggal dan koleksi Doktrin dan akan mencegah masalah tampilan browser yang Anda alami.


5
Anda juga bisa dump()dengan MaxDepth , di dump()argumen kedua adalah MaxDepth .
MB Kakadiya

3
Jika Anda lebih memilih untuk memiliki keluaran debug dalam log kesalahan php Anda, gunakan yang berikut ini: error_log(print_r(\Doctrine\Common\Util\Debug::export($variable, $depth),1)); Cukup merepotkan untuk mengetik setiap saat, tetapi Anda dapat dengan mudah membuat makro untuknya.
Andrea Sprega

Fungsi ini sangat membantu! Menyelamatkan saya dari kerusakan browser juga.
Ren

20

diformat dengan baik:

echo '<pre>';
\Doctrine\Common\Util\Debug::dump($user, $recurciveLevelToDisplay);
echo '</pre>';


4

Masalahnya adalah bahwa dalam hubungan dua arah, kedua entitas memiliki tautan satu sama lain, jadi saat menampilkan entitas1 var_dump juga harus mencetak semua properti entitas2, yang mencakup entitas1 itu sendiri yang memberi Anda loop.


Ini adalah satu-satunya jawaban yang menjelaskan MENGAPA hal itu terjadi.
pengguna2342558

4

Symfony <2.6

Anda dapat menggunakannya \Doctrine\Common\Util\Debug::dump($variable, $depth);untuk menampilkan keluaran doktrin tanpa informasi proxy.

Symfony> 2.6.0

Jika Anda menggunakan symfony 2.6 atau lebih, saya sangat menyarankan Anda untuk menggunakannya dump(). Ini menunjukkan keluaran yang diformat dan diwarnai dengan baik, dan Anda dapat mengeluarkan / menyembunyikan baris secara dinamis. masukkan deskripsi gambar di sini


2

Get_object_vars () meningkatkan visualisasi juga.

echo "<pre>";
\Doctrine\Common\Util\Debug::dump(get_object_vars($user));

2

Dengan Symfony 2.6 Anda sekarang bisa menggunakan dump ($ var) di controller Anda dan {{dump (var)}} di twig.

Pastikan untuk menambahkan ini ke file AppKernal.php Anda, di bagian array ('dev', 'test').

$bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle();

2

gunakan dump ($ user) dan Anda dapat melihat hasil yang sempurna di Symfony Profiler! semoga berhasil


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.