我有一个 PHP Entity 类,其中每个实体可能包含多个子实体,并且__get()
用于从父实体中退出以查找其子实体。
$parent->Child1->Child2->Child3->value;
public function __get($name) {
$name = preg_replace('/![A-z ]+/', '', $name);
// $child = getByName($name, $parentid)
if ($child = $this->getByName(str_replace('_', ' ', $name), $this->id)) {
return $child;
} else {
return false;
}
}
但是,如果任何子实体不存在,它会失败并显示“尝试获取非对象的属性......”除了执行以下操作之外,是否有更好的方法来防止这种情况?
if(isset($parent) && is_object($parent->Child1) && is_object($parent->Child1->Child2)