我遇到了PHP問題,因爲它一直在標題中拋出異常提及。 它失敗以下行:PHP:致命錯誤調用成員函數...在非對象上
$item->getDescription();
我明白了什麼錯誤應該是指($item
爲空)。但是,$ item不爲null。
該場景如下: 這是一個腳本,可以將供應商的產品同步到商店。爲此,我創建了自己的類(SimpleProduct)。這個類有一個getDescription()函數。
問題是我收到的數據往往會有很多垃圾,比如尚未填充的項目。該腳本應該跳過這些項目並繼續遍歷其餘產品。 這個致命錯誤會殺死整個腳本。
我已經嘗試過實施保護措施,以防止這種情況發生,但它仍然不斷髮生。這裏是當前的代碼(由於它們與currect情況不相關,所以刪除了一些代碼段)。
//This is part of a class that performs the sync
public function syncProduct($item) {
if(empty($item)) { return "Not a product"; }
else { var_dump($item) }
$foo = $item->getDescription();
}
在檢查的var_dump結果,我得到填充。看到一些值的對象,因爲它是正確的類型(SimpleProduct)的,它不是空/空,我會懷疑這個錯誤停止發生,但它仍然如此。
另請注意,在彈出一個產品之前,幾個產品同步已經沒有任何錯誤發生,所以我知道該代碼是有效的。不知何故,這個特定的情況滑過我的空檢查。
我的空檢查有問題嗎? 有問題的對象存在時,如何引發非對象錯誤?
你可以發佈var_dump輸出嗎? – cegfault 2012-08-06 09:32:09
如果你在if()之前做了一個var_dump(),對於所有的$ items,你會看到有問題的$ item類型嗎? – periklis 2012-08-06 09:32:30
在這種情況下,我可以看到的唯一原因是getDescription()方法throeing該錯誤..你可以請代碼爲getDescription()方法 – 2012-08-06 09:34:37