Занадто багато даних із var_dump у doctrine symfony2


100

У мене близько 40 організацій і багато двосторонніх відносин. Щоразу, коли я використовую var_dump ($ user) або будь-яку сутність, мій браузер завантажується занадто багато даних масивів і змінних, то він просто вийшов з ладу.

Я хочу, в чому проблема.

Дані вставляються прекрасно. Чи можу я викликати проблеми у виробництві.


Про який браузер ми говоримо?
Привид

3
Ви використовуєте xdebug? Якщо ні, подумайте про його використання, а замість var_dump просто скористайтеся ступінчастою відладкою з IDE, як Ecplipse, Netbeans або PHPStorm. Все це буде добре відображати дані змінних.
хакре

Що ви маєте на увазі під «збоєм» - закривається програма (або вкладка) браузера, чи не відображається результат, або сторінка переривається?
Юрій

мій браузер відображає дуже довгу сторінку даних змінних із усіма моїми частинами та всім цим. схоже, це йде в нескінченний цикл. Я спробував botf firefox та chrome. якщо я спробую будь-який інший клас, який не має відношення, то він працює нормально, але при багатьох стосунках він заморожує комп'ютер. мені довелося закінчити це завдання
Міраж

У мене клас з голими кістками, і мій браузер теж вийшов з ладу. Я ненавиджу всі ці затримки за замовчуванням.
ChocoDeveloper

Відповіді:


221

Замініть var_dump () методом налагодження dump (), наданим Doctrine Common .

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

Він працює для окремих об’єктів і колекцій Доктрин і повинен запобігати відображенню браузера проблем.


5
Ви також можете dump()з MaxDepth , у dump()другому аргументі - MaxDepth .
МБ Какадія

3
Якщо ви віддаєте перевагу виводу налагодження у вашому журналі журналу помилок, використовуйте наступне: error_log(print_r(\Doctrine\Common\Util\Debug::export($variable, $depth),1)); Набирати щоразу громіздко, але ви можете легко створити макрос для цього.
Андреа Шпрега

Ця функція дуже корисна! Врятувало мене також від збоїв у веб-переглядачі.
Рен

20

добре відформатований:

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


4

Проблема полягає в тому, що у двосторонніх відносинах обидва суб'єкти мають посилання один на одного, тому під час відображення entit1 var_dump також доведеться роздруковувати всі властивості entit2, до яких належить і сам entit1, що дає вам цикл.


Це єдина відповідь, яка пояснює, ЧОМУ це відбувається.
користувач2342558

4

Симфонія <2.6

Ви можете використовувати \Doctrine\Common\Util\Debug::dump($variable, $depth);його для відображення доктрина виводу без інформації про проксі.

Симфонія> 2.6

Якщо ви використовуєте symfony 2.6 або більше, я настійно раджу вам використовувати dump(). Він показує чітко сформований і кольоровий вихід, і ви можете динамічно витрачати / приховувати рядки. введіть тут опис зображення



2

З Symfony 2.6 тепер ви можете просто використовувати dump ($ var) у своєму контролері та {{dump (var)}} у гілочку.

Обов’язково додайте це у файл AppKernal.php, у розділі масив ('dev', 'test').

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


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.