PHP-访问深度对象的深度属性时处理错误的最佳方法是什么?

时间:2019-02-12 04:43:35

标签: php laravel-5


我正在开发一个具有复杂模型关系的项目(Laravel)
我有超过10张桌子,上面有很多外键。
现在,当我通过许多雄辩的对象级别访问一个深层属性时,我就不得不处理错误。 以下是关系示例

    Category
       ||
       ||
    Product    ===     Seller    ===    User === Country === Region
       ||                ||              ||
       ||                ||              ||
      Cart          Seller Level        Buyer
       ||                                ||
       ||                                ||
     Invoice ==============================

这是一个简单的脚本,用于从指定发票(雄辩)中获得卖方/买方的国家/地区

$invoice = Invoice::find($id);
$countrySeller = $invoice->cart->product->seller->user->country; //6 levels
$countryBuyer = $invoice->buyer->user->country; // 4 levels

在倒霉的日子里,脚本在Trying to get property of non-object中出现了错误laravel.log-没有错误。

调试后,我发现了问题。缺少访问属性的数据。

第一个解决方案看起来很糟糕。正在检查是否已设置所有子属性

if (isset($invoice->buyer) && isset($invoice->buyer->user) && isset($invoice->buyer->user->country)) {
    // Do sth
}

我试图将上述脚本包装到try-catch块中。也没有用。

0 个答案:

没有答案