簡體   English   中英

PHP / Symfony2-對象上的print_r

[英]PHP/Symfony2 - print_r on Object

我發生了一些奇怪的事情,我想知道它們是否與PHP或Symfony有關。 基本上,從我的表單發出ajax請求,並將表單數據發布到我的控制器。

現在,我需要對剛剛保存到數據庫中的實體進行一些工作,因此,為了達到需要的目的,我有一個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標簽。

謝謝

您已經安裝了xdebug安裝程序,該程序可以為您格式化var_dump 請按照此處的說明將其禁用,但這仍然會給您與print_r相同的問題,但分配錯誤。

如果您想保留xdebug(我想您應該這樣做,應該這樣做),則有兩個選擇,要么在php.ini中禁用xdebug.overload_var_dumpdocs ),要么可以使用\\Doctrine\\Common\\Util\\Debug::dump($alert)

他們在Symfony 2.6中引入了新功能VarDumper ,它是內置的功能非常強大的調試工具。您可以在此處查看文檔: http : //symfony.com/doc/current/components/var_dumper/introduction.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM