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.

Mirage
sumber
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.

mgiagnoni.dll
sumber
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>';
Bouchehboun Saad
sumber
5

Contoh sederhana dan mudah.

var_dump(serialize($Object));
Kentaro Ohkouchi
sumber
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.

Rad80
sumber
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

pergi ke
sumber
2

Get_object_vars () meningkatkan visualisasi juga.

echo "<pre>";
\Doctrine\Common\Util\Debug::dump(get_object_vars($user));
Wellington Lorindo
sumber
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();
J-siapa
sumber
2

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

Vitaly Pugach
sumber
1

Cukup gunakan echo serialize ($ user);

AlexM
sumber