2016-01-19 133 views
-3

我正在處理這個方法。調用一個非對象的成員函數getTitle() - 但是一個對象

public function getTabs() 
{ 
    $tabs = []; 
    foreach ($this->campaigns as $index => $campaign) { 

     // return $campaign->getTitle(); 
     // return get_class($campaign); 
     // $title = $campaign->getTitle(); 

     // return $campaign->getTabTitle(); 
     // return get_class($campaign); 
     // $title = $campaign->getTabTitle(); 

     array_push($tabs, [ 
       'title' => $title 
      ]); 
    } 
    return $tabs; 
} 

在$這個 - >活動數組中的值,是運動對象的實例(舒爾,由於typehinting在addCampaign方法 - 這裏沒有顯示,但仍然)。

如果我將取消註釋一行返回值而不是將其保存到變量的行,它會起作用,但如果我嘗試將它保存到$ title變量,則會引發異常Call to a member function getTitle() on a non-object

我想它也有其他的方法,但仍然沒有運氣...

如何解決這個任何想法?

爲什麼PHP在這裏有所作爲?想了解這個過程!

感謝大家花時間閱讀本文! :)

+1

'var_dump'每個條目在你嘗試調用'getTitle'之前。簡單的調試。如果PHP告訴你它不是一個對象,那麼它不是一個對象。找出它是什麼,而不是通過檢查它,然後追溯它是如何成爲這種方式。 – deceze

回答

2

我最好的選擇是你們中的一個輸入campaigns不是一個對象。嘗試做一個var_dump($this->campaings);

它會工作,如果你把返回,因爲它會停止第一個元素後的foreach循環,但如果你把它存儲在一個變量,它會嘗試調用你的數組的所有元素的getTitle()方法。

1

下面的代碼應該幫助你找出什麼是與特定項目的問題:

foreach ($this->campaigns as $index => $campaign) { 
    var_dump(get_class($campaign)); 
} 

如果它不會幫助這將是偉大采取一看全班同學。也許有任何其他的地方你將一個項目添加到數組中。也許在初始化?

+0

嘿,thx的片段。我已經得到了錯誤。這實際上是一個簡單的^^。經過漫長的一天,我簡單地忘記了調試的基礎知識:P但是,無論如何,請希望它能幫助其他人! –

相關問題