PHP-访问深层对象的深层属性时,处理错误的最佳方法是什么?
PHP-访问深层对象的深层属性时,处理错误的最佳方法是什么?,php,laravel-5,Php,Laravel 5,我正在开发一个具有复杂模型关系的项目(Laravel) 我有10多张带有许多外键的桌子。 现在,当通过多个层次的有说服力的对象访问深层属性时,我一直在处理错误。 以下是关系示例 Category || || Product === Seller === User === Country === Region || || || ||
我正在开发一个具有复杂模型关系的项目(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
在一个倒霉的日子里,脚本在laravel.log
中尝试获取非对象的属性时出现错误——没有错误行
调试后,我发现了问题。缺少有关访问属性的数据
第一个解决方案看起来很棘手。它正在检查所有子属性的设置
if (isset($invoice->buyer) && isset($invoice->buyer->user) && isset($invoice->buyer->user->country)) {
// Do sth
}
我试图将上述脚本包装到try-catch
块中。它也不能工作。这有意义吗?@MuratTutumlu哇,它出现在5.5版。但是我的项目使用5.1:(但是,我需要检查所有属性是否有效。任何缺少的属性都必须被警告,而不是返回null
)。