php - 捕获 'call to a member function on a non-object'的最安全方法

标签 php magento

继承了一段代码,其中插件更新已开始导致此错误

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()

然后如果没有则继续执行,而不是出错

最佳答案

我会这样做:

if (isset($order->getShippingAddress()) && is_object($order->getShippingAddress()) ) {
    /* It is an object and it isn't null */
} else {
    /* It doesn't */
}

isset()检查表达式是否不为空并且具有值(以避免空指向)和 is_object()检查这样的表达式是否是一个对象。

关于php - 捕获 'call to a member function on a non-object'的最安全方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24785398/

相关文章:

php - 通过 magento 安装为我的子域安装的通配符 ssl 无法正常工作

php - Magento 覆盖本地文件夹中的核心 Controller

xml - Magento 继承和重用模板变量

javascript - echo $_POST[valuename] 未被读取

php - 创建合并 2 行的 CSV 并将值设置为 codeigniter 中的标题

javascript - 刷新div而不用jquery重新加载页面

javascript - magento2 javascript 文件中的更改不适用于我的店面

Magento - 如何在主页中显示所有产品?

php - psr-2 多于一个空行

java - 你如何安排时间?