Занадто багато даних із 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.