2015-02-19 2 views
1

У меня есть некоторые странные вещи, и мне было интересно, связаны ли они с PHP или Symfony. В принципе, из моей формы создается запрос ajax и данные формы передаются моему контроллеру.PHP/Symfony2 - print_r on Object

Теперь мне нужно сделать некоторую работу с объектом, который только что был сохранялось в базу данных, так, чтобы это туда, где она должна идти, у меня есть EventListener и я

protected $alertEntity; 

public function postPersist(LifecycleEventArgs $args) 
{ 
    $entity = $args->getEntity(); 
    if ($entity instanceof AvailabilityAlert) { 
     $this->alertEntity = $entity; 
    } 
} 

public function postFlush(PostFlushEventArgs $args) 
{ 
    $this->api_service->addFlightsAction($this->alertEntity); 
} 

Я получить объект в postPersist, а затем передать его туда, где ему нужно идти в postFlush.

Все в порядке, никаких проблем. Странная часть этого

public function addFlightsAction($alert){ 
    print_r($alert); 
} 

Если у меня есть выше в print_r, она продолжается вечно, пока он окончательно не перелив размера распределения ошибок.

Если я делаю это в var_dump, он выводит предупреждение для меня, но его в нечитаемом формате, например. (краткая выдержка)

<pre class='xdebug-var-dump' dir='ltr'> 
<b>object</b>(<i>Ontro\AlertBundle\Entity\AvailabilityAlert</i>)[<i>284</i>] 
    <i>private</i> 'id' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>39</font> 
    <i>private</i> 'searchCommand' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'A20APRLONLAX'</font> <i>(length=12)</i> 
    <i>private</i> 'isConnecting' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'no'</font> <i>(length=2)</i> 
    <i>private</i> 'lastUpdated' <font color='#888a85'>=&gt;</font> 
    <b>object</b>(<i>DateTime</i>)[<i>288</i>] 
     <i>public</i> 'date' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'2015-02-19 10:54:54'</font> <i>(length=19)</i> 
     <i>public</i> 'timezone_type' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>3</font> 
     <i>public</i> 'timezone' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'Europe/London'</font> <i>(length=13)</i> 
    <i>private</i> 'isDeleted' <font color='#888a85'>=&gt;</font> <small>int</small> <font color='#4e9a06'>0</font> 
    <i>private</i> 'alertStatus' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>'Active'</font> <i>(length=6)</i> 
    <i>private</i> 'bookingClass' <font color='#888a85'>=&gt;</font> 
    <b>object</b>(<i>Doctrine\ORM\PersistentCollection</i>)[<i>372</i>] 
     <i>private</i> 'snapshot' <font color='#888a85'>=&gt;</font> 

Так зачем это делать? Есть ли способ, чтобы я мог распечатать это красиво, чтобы я мог видеть это? Я не против вышеописанного вывода, пока он избавился от всех тэгов html.

Благодаря

ответ

3

У вас есть Xdebug установить, какие форматы var_dump для вас. Либо отключите его, следуя инструкциям here, но это все равно даст вам ту же проблему, что и print_r с ошибкой выделения.

Если вы хотите сохранить XDebug (который я предполагаю, что вы делаете, и должен), у вас есть два варианта, либо отключить xdebug.overload_var_dump (docs) в вашем php.ini или вы можете использовать вместо \Doctrine\Common\Util\Debug::dump($alert).

В Symfony 2.6 они ввели новую функцию, VarDumper которая является довольно мощным инструментом отладки встроен прямо в Вы можете проверить документацию здесь :. http://symfony.com/doc/current/components/var_dumper/introduction.html

+1

Кроме того, попробуйте компонент VarDumper и дамп функции() он предоставляет: http://symfony.com/doc/current/components/var_dumper/introduction.html –

+0

@JakubZalas Это хороший момент, и это отличный инструмент. – Prisoner

+0

Не стесняйтесь включать его в свой ответ. Таким образом, было бы легче найти. –