Symfony2 doctrine2'de var_dump ile çok fazla veri var


100

Yaklaşık 40 varlığım ve birçok çift yönlü ilişkim var. Ne zaman var_dump ($ user) veya herhangi bir varlık kullandığımda tarayıcım çok fazla dizi ve değişken verisi ile yüklenir ve ardından çöktü.

sorunun ne olduğunu bilmek istiyorum.

Veriler düzgün bir şekilde giriliyor. Üretimde sorun yaratabilir miyim?


Hangi tarayıcıdan bahsediyoruz?
Madara'nın Hayalet

3
Xdebug kullanıyor musunuz? Değilse, kullanmayı düşünün ve var_dump yerine yalnızca Ecplipse, Netbeans veya PHPStorm gibi bir IDE ile adım hata ayıklayıcısını kullanın. Tüm bunlar değişken verilerini güzel bir şekilde gösterecektir.
hakre

"Kilitlenme" ile ne demek istiyorsun - tarayıcı uygulaması (veya sekme) kapanıyor mu, sonuç göstermiyor mu veya sayfa kesiliyor mu?
Yuriy

tarayıcım tüm varlıklarımla ve tüm bunlarla çok uzun bir değişken verisi sayfası görüntülüyor. hiç bitmeyen döngüde gidiyor gibi görünüyor. botf firefox ve chrome'u denedim. İlişkisi olmayan başka bir sınıfı denersem, o zaman iyi çalışıyor ama birçok ilişkiyle bilgisayarı donduruyor. bu görevi bitirmek zorunda kaldım
Mirage

Bare-bones sınıfım var ve tarayıcım da çöktü. Tüm bu gecikmiş kusurlardan nefret ediyorum.
ChocoDeveloper 01

Yanıtlar:


221

Var_dump () 'ı Doctrine Common tarafından sağlanan hata ayıklama yöntemi dump () ile değiştirin .

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

Tek nesneler ve Doctrine koleksiyonları için çalışır ve tarayıcınızın yaşadığınız sorunları görüntülemesini engellemelidir.


5
MaxDepthdump() ile de yapabilirsiniz , ikinci argümanda MaxDepth . dump()
MB Kakadiya

3
Hata ayıklama çıktısının php hata günlüğünüzde olmasını tercih ediyorsanız, aşağıdakileri kullanın: error_log(print_r(\Doctrine\Common\Util\Debug::export($variable, $depth),1)); Her seferinde yazmak oldukça zahmetlidir, ancak bunun için kolayca bir makro oluşturabilirsiniz.
Andrea Sprega

Bu işlev çok faydalıdır! Beni tarayıcı çökmelerinden de kurtardı.
Ren

20

iyi biçimlendirilmiş:

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


4

Sorun, çift yönlü bir ilişkide her iki varlığın da birbirine bir bağlantısının olmasıdır, bu nedenle varlık1 görüntülenirken var_dump, varlık1'in kendisi de size bir döngü veren varlık2'nin tüm özelliklerini yazdırmak zorunda kalacaktır.


NEDEN olduğunu açıklayan tek cevap budur.
user2342558

4

Symfony <2.6

\Doctrine\Common\Util\Debug::dump($variable, $depth);Proxy bilgisi olmadan doktrin çıktısını görüntülemeyi kullanabilirsiniz .

Symfony> 2.6

Symfony 2.6 veya daha fazlasını kullanıyorsanız, kullanmanızı şiddetle tavsiye ederim dump(). İyi biçimlendirilmiş ve renkli bir çıktı gösterir ve satırları dinamik olarak genişletebilir / gizleyebilirsiniz. görüntü açıklamasını buraya girin


2

Get_object_vars () görselleştirmeyi de geliştirir.

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

2

Symfony 2.6 ile artık denetleyicinizde dump ($ var) ve twig'de {{dump (var)}} kullanabilirsiniz.

Bunu dizi ('dev', 'test') bölümünde AppKernal.php dosyanıza eklediğinizden emin olun.

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

2

dump ($ user) kullanın ve Symfony Profiler'da mükemmel sonucu görebilirsiniz! iyi şanslar


1

Sadece echo serialize ($ kullanıcı) kullanın;

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.