2012-08-10 15 views
87

Ich habe rund 40 Entitäten und viele bidirektionale Beziehungen. Immer, wenn ich var_dump ($ user) oder irgendeine Entität verwende, wird mein Browser mit zu vielen Daten von Arrays und Variablen geladen, dann ist er einfach abgestürzt.Zu viele Daten mit var_dump in symfony2 doctrine2

Ich möchte, was das Problem ist.

Die Daten werden gerade eingefügt. Kann ich Probleme in der Produktion verursachen?

+0

Über welchen Browser sprechen wir? –

+3

Verwenden Sie xdebug? Wenn nicht, sollten Sie es verwenden und anstelle von var_dump verwenden Sie einfach den Schritt Debugger mit einer IDE wie Eplipse, Netbeans oder PHPStorm. All dies wird die Variablen Daten schön anzeigen. – hakre

+0

Was meinen Sie mit "Absturz" - schließt die Browser-Anwendung (oder Tab), oder zeigt es kein Ergebnis an oder die Seite wird unterbrochen? – Yuriy

Antwort

197

ersetzen var_dump() mit dem Debug-Methode dump() durch Lehre gemeinsam vorgesehen.

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

Es funktioniert für einzelne Objekte und Doctrine-Sammlungen und sollte verhindern, dass Browser Probleme anzeigen, die Sie haben.

+1

danke Kumpel, das hat perfekt funktioniert – user825904

+0

Es funktioniert für mehrere Ergebnis mit Array zu – GusDeCooL

+3

Sie können auch 'dump()' mit ** MaxDepth **, in 'dump()' zweiten Argument ist ** MaxDepth **. –

2

Das Problem ist, dass in einer bidirektionalen Beziehung beide Entitäten eine Verbindung zueinander haben, also während der Anzeige von entity1 var_dump muss auch alle Eigenschaften von entity2, die entity1 selbst enthalten eine Schleife zu drucken.

19

gut formatiert:

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

Die get_object_vars() auch die Visualisierung verbessern.

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

Verwenden Sie einfach Echo serialize ($ user);

0

Mit Symfony 2.6 können Sie nun einfach dump ($ var) in Ihrem Controller und {{dump (var)}} in twig verwenden.

Stellen Sie sicher, dass Sie dies im Abschnitt Array ('dev', 'test') zu Ihrer AppKernal.php-Datei hinzufügen.

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

Einfaches und einfaches Beispiel.

+0

Ich würde 'serialize' Ausgabe nicht einfach und leicht zu lesen nennen. –

1

Verwenden Sie dump ($ user) und Sie können das perfekte Ergebnis in Symfony Profiler sehen! Glück

1

Symfony < 2,6

können Sie \Doctrine\Common\Util\Debug::dump($variable, $depth); verwenden es zeigt Lehre ausgegeben, ohne die Proxy-Informationen.

Symfony> 2.6

Wenn Sie mit symfony 2.6 oder mehr, ich rate Ihnen dringend dump() zu verwenden. Es zeigt eine gut formatierte und farbige Ausgabe, und Sie können Zeilen dynamisch erweitern/ausblenden. enter image description here

Verwandte Themen