继承了一段代码,其中插件的更新已经开始导致此错误
Fatal error: Call to a member function getId() on a non-object in...
有问题的行是$shippingId = $order->getShippingAddress()->getId();
对周围代码的更新意味着此函数返回任何内容都没有问题,其余代码可以在$shippingId
不存在的情况下运行
我需要的是一种说法的方法
if ($shippingId = $order->getShippingAddress()->getId() WORKS)
do_these_things()
然后而不是错误只是继续进行
答案 0 :(得分:2)
我会这样做:
if (isset($order->getShippingAddress()) && is_object($order->getShippingAddress()) ) {
/* It is an object and it isn't null */
} else {
/* It doesn't */
}
isset()
检查表达式是否为空且具有值(以避免空值)和is_object()
检查这样的表达式是否为对象。
答案 1 :(得分:0)
您可以使用arielnmz提到的方法,也可以使用自定义异常处理程序。
try{
if ($shippingId = $order->getShippingAddress()->getId() WORKS)
do_these_things();
}
catch(Exception e){
//Echo out the error msg or save it on your error log stash. up to you
$error_msg=$e->getMessage();
}
//your regular codes
使用这种方式,如果try块中存在错误,则会在catch块上捕获错误,并且您的代码将继续执行正常的执行模式。