Ich habe ein sehr merkwürdiges Problem, wenn ich versuche, var_dump
(oder print_r
) ein Doctrine-Objekt, meine Apache-Antworten mit einer leeren leeren Seite (200 OK-Header). Ich kann var_dump
eine normale php var wie:
Und es funktioniert gut. Aber ich kann mit keinem Objekt aus irgendeiner Doctrine-Klasse (wie einem Ergebnis von $connection->query()
oder einer Instanz einer Klasse aus meinem Objektmodell mit Doctrine).
Weiß jemand, warum das passiert?
Ich hatte das manchmal, als ich versuchte, ein Objekt zu referenzieren, das sich selbst referenziert - es kommt in eine Schleife und hat keinen Speicher mehr. Möglicherweise passiert das mit dir.
Versuchen Sie, das Speicherlimit zu erhöhen ( print_r()
) und sehen Sie, ob das Problem behoben ist.
Bearbeiten: Ich denke nicht, dass es eine tatsächliche Lösung dafür gibt - es ist PHP's internes ini_set('memory_limit', '256M');
/ var_dump
, das die Tiefe bei Rekursion nicht einschränkt (oder zumindest nicht richtig macht). Wenn Sie die Erweiterung XDebug installieren, kann dies das integrierte print_r
durch eine Version ersetzen, die die Rekursion besser verarbeitet.
Lazy Load Proxies enthalten immer eine Instanz von Doctrines EntityManager und all seinen Abhängigkeiten.
Daher wird eine var_dump
möglicherweise eine sehr große rekursive Struktur ausgeben, die nicht rendern und lesen kann. Sie müssen \Doctrine\Common\Util\Debug::dump()
verwenden, um das Dumping auf eine für Menschen lesbare Ebene zu beschränken. Beachten Sie, dass die Standardtiefe für diese Funktion auf 2 gesetzt ist (dies ist der zweite Parameter)
Sie können toArray verwenden, wenn Sie sicher sind, dass das Objekt eine Instanz von Doctrine_Collection ist. Xdebug hilft nicht bei Doktrinenaufzeichnungen.
Die von mir vorgeschlagene Methode ist die Implementierung einer benutzerdefinierten rekursiven Funktion zum Drucken von Objekten, die Doctrine_Record :: toArray () bei Bedarf verwendet
%Vor%Einige rekursive Funktion zum Debuggen mit maximalen Verschachtelungsebenen sind hier
Sehen Sie sich die Kommentare an, suchen Sie nach "Rekursion"