symfony2 doctrine2에서 var_dump를 사용하는 데이터가 너무 많습니다.


100

약 40 개의 엔티티와 많은 양방향 관계가 있습니다. var_dump ($ user) 또는 모든 엔티티를 사용할 때마다 브라우저가 너무 많은 배열 및 변수 데이터로로드되면 충돌이 발생합니다.

나는 무엇이 문제인지를 원한다.

데이터가 잘 삽입되고 있습니다. 프로덕션에서 문제를 일으킬 수 있습니까?


우리가 말하는 브라우저는 무엇입니까?
Madara 's Ghost

3
xdebug를 사용하고 있습니까? 그렇지 않은 경우 사용을 고려하고 var_dump 대신 Ecplipse, Netbeans 또는 PHPStorm과 같은 IDE에서 단계 디버거를 사용하십시오. 이 모든 것이 변수 데이터를 멋지게 표시합니다.
hakre 2012-08-10

"충돌"이란 무엇을 의미합니까? 브라우저 응용 프로그램 (또는 탭)이 닫히거나 결과가 표시되지 않거나 페이지가 중단됩니까?
Yuriy

내 브라우저는 내 모든 요소와 모든 것을 포함하는 매우 긴 변수 데이터 페이지를 표시합니다. 끝없는 루프에 들어가는 것 같습니다. 나는 botf firefox와 chrome을 시도했습니다. 관계가없는 다른 클래스를 시도하면 정상적으로 작동하지만 많은 관계로 인해 컴퓨터가 동결됩니다. 나는이를 작업으로했다
미라지

베어 본 클래스가 있고 브라우저도 충돌했습니다. 이 모든 지연된 기본값이 싫습니다.
ChocoDeveloper

답변:


221

var_dump ()Doctrine Common에서 제공 하는 디버그 메서드 dump ()로 바꿉니다 .

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

단일 개체 및 Doctrine 컬렉션에 대해 작동하며 브라우저 표시 문제를 방지해야합니다.


5
당신은 또한 수 dump()MAXDEPTHdump()두 번째 인수입니다 MAXDEPTH .
MB Kakadiya

3
PHP 오류 로그에 디버그 출력을 포함하려면 다음을 사용하십시오. error_log(print_r(\Doctrine\Common\Util\Debug::export($variable, $depth),1)); 매번 입력하는 것은 매우 번거롭지 만 매크로를 쉽게 만들 수 있습니다.
Andrea Sprega

이 기능은 매우 유용합니다! 브라우저 충돌로부터 나를 구했습니다.
르네

20

잘 포맷 :

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


4

문제는 양방향 관계에서 두 엔티티가 서로에 대한 링크가 있으므로 entity1을 표시하는 동안 var_dump는 entity1 자체를 포함하여 루프를 제공하는 entity2의 모든 속성을 인쇄해야한다는 것입니다.


이것이 왜 발생 하는지를 설명하는 유일한 대답입니다.
user2342558

4

Symfony <2.6

\Doctrine\Common\Util\Debug::dump($variable, $depth);프록시 정보없이 교리 출력을 표시 하는 데 사용할 수 있습니다 .

Symfony> 2.6

심포니 2.6 이상을 사용하고 있다면 dump(). 형식이 잘 지정되고 색상이 지정된 출력을 표시하며 행을 동적으로 확장 / 숨길 수 있습니다. 여기에 이미지 설명 입력


2

get_object_vars ()는 시각화도 향상시킵니다.

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

2

Symfony 2.6에서는 이제 컨트롤러에서 dump ($ var)를 사용하고 나뭇 가지에서 {{dump (var)}}를 사용할 수 있습니다.

이것을 AppKernal.php 파일의 array ( 'dev', 'test') 섹션에 추가하십시오.

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

2

dump ($ user)를 사용하면 Symfony Profiler에서 완벽한 결과를 볼 수 있습니다! 행운을 빕니다


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.