我遇到了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