2012-08-10 8 views
87

Mam około 40 podmiotów i wiele dwukierunkowych relacji. Ilekroć używam var_dump ($ user) lub jakiejkolwiek jednostki moja przeglądarka załadowana jest zbyt dużą ilością danych tablic i zmiennych, to po prostu uległa awarii.Za dużo danych z var_dump w symfony2 doctrine2

Chcę, w czym problem.

Dane są wprowadzane poprawnie. Czy mogę spowodować problem z produkcją?

+0

O jakiej przeglądarce mówimy? –

+3

Czy używasz xdebug? Jeśli nie, należy go użyć i zamiast var_dump wystarczy użyć debuggera kroku z IDE, jak Ecplipse, Netbeans lub PHPStorm. Wszystkie te ładnie wyświetlają dane zmiennych. – hakre

+0

Co masz na myśli przez "awarię" - czy aplikacja (lub zakładka) przeglądarki jest zamknięta, czy nie wyświetla się żaden wynik, czy strona jest przerywana? – Yuriy

Odpowiedz

197

Wymień var_dump() z metodą debug dump() dostarczonych przez doktrynę Common.

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

Działa dla pojedynczych obiektów i zbiorów Doctrine i powinien zapobiegać wyświetlaniu problemów z przeglądarką.

+1

dziękuję kumplowi, który działał idealnie – user825904

+0

Działa dla wielu wyników z tablicą też – GusDeCooL

+3

Możesz również "dump()' z ** MaxDepth **, w 'dump()' drugim argumentem jest ** MaxDepth **. –

2

Problem polega na tym, że w relacji dwukierunkowej obie jednostki mają łącze do siebie, więc podczas wyświetlania encji1 plik_zmienny będzie musiał również wydrukować wszystkie właściwości jednostki2, które obejmują samą jednostkę1, dając pętlę.

19

sformatowane:

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

W get_object_vars() poprawienia wizualizacji za.

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

Po prostu użyj echo serialize ($ user);

0

Z Symfony 2.6 można teraz po prostu użyć dump ($ var) w kontrolerze i {{dump (var)}} w gałązce.

Należy dodać tę informację do pliku AppKernal.php w sekcji "dev", "test".

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

Prosty i łatwy przykład.

var_dump(serialize($Object)); 
+0

Nie nazwałbym 'serialize' wyjściem prostym i łatwym do odczytania. –

1

użyj dump ($ user) i możesz zobaczyć perfekcyjny wynik w programie Symfony Profiler! Powodzenia

1

Symfony < 2,6

Można użyć \Doctrine\Common\Util\Debug::dump($variable, $depth); wyświetla wyjście doktryny bez informacji proxy.

Symfony> 2,6

Jeśli używasz symfony 2.6 lub więcej, zdecydowanie porad można korzystać dump(). Pokazuje dobrze sformatowane i kolorowe wydruki i można dynamicznie wydać/ukryć wiersze. enter image description here

Powiązane problemy