我遇到了PHP的问题,因为它一直在标题中引用Exception.它在以下行失败:
$item->getDescription();
Run Code Online (Sandbox Code Playgroud)
我理解错误应该是什么意思($item
是null).但是,$ item不为null.
方案如下:这是一个将供应商的产品同步到商店的脚本.为此,我创建了自己的类(SimpleProduct).这个类有一个getDescription()函数.
问题是我收到的数据往往有很多垃圾,就像尚未填写的物品一样.该脚本应跳过这些项目并继续迭代其余产品.这个致命的错误会杀死整个脚本.
我已经尝试过实施保护措施来防止这种情况发生,但它仍然会不断发生.这是当前的代码(删除了一些片段,因为它们与当前案例无关).
//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();
}
Run Code Online (Sandbox Code Playgroud)
当检查var_dump结果时,我得到一个填充了一些值的对象.看到它是正确的类型(SimpleProduct)并且它不是空/ null,我怀疑这个错误停止发生,但它仍然存在.
另请注意,在弹出这个产品之前,已经发生了几个没有任何错误的产品同步,所以我知道代码是有效的.不知何故,这个特定情况滑过我的空检查.
我的空检是否有问题?当有问题的对象存在时,如何抛出非对象的错误?
而不是检查变量是否为空,为什么不检查它是否是一个实例SimpleProduct
?
if ($item instanceof SimpleProduct)
{
}
Run Code Online (Sandbox Code Playgroud)
http://php.net/manual/en/language.operators.type.php
归档时间: |
|
查看次数: |
23680 次 |
最近记录: |