访问不存在的对象时避免 try catch 属性
Avoid try catch when accesing to an non-existing object property
我有一个对象,我打印了一个 属性:
的值
echo $myObject->field_seo_multidomain->$lang_arr[$language]->$domains_arr[$domain]->field_seo->field_meta_description->value;
当 属性 不存在时,我该怎么做才能避免错误?例如上面的$lang_arr[$language](二级属性)不存在。我已经使用了 try-catch,效果很好,但我担心这可能会耗费时间,或者在某些日志记录文本文件或其他地方累积错误。
你可以写一个神奇的getter函数并检查属性 like
是否存在
public function __get($property)
{
if(property_exists($this, $property) {
return $this->{$property};
}
}
编辑:
实际上,当我再次检查用法时;最好在 class field_seo_multidomain 中有一个方法,这样在这个方法中制作 checks/validations 会更有用
public function getText($lang, $domain){
if(property_exists($this, $lang) {
if(property_exists($this->{$lang}, $domain) {
return $this->{$lang}->{$domain}->field_seo->field_meta_description->value;
}
}
return '';
}
然后 app/view 一方可以跟注;
echo $myObject->field_seo_multidomain->getText($lang_arr[$language], $domains_arr[$domain]);
如果语言 属性 或域 属性 不存在,它只会回显一个空字符串,您也可以使用这种方法添加后备语言功能。
我有一个对象,我打印了一个 属性:
的值echo $myObject->field_seo_multidomain->$lang_arr[$language]->$domains_arr[$domain]->field_seo->field_meta_description->value;
当 属性 不存在时,我该怎么做才能避免错误?例如上面的$lang_arr[$language](二级属性)不存在。我已经使用了 try-catch,效果很好,但我担心这可能会耗费时间,或者在某些日志记录文本文件或其他地方累积错误。
你可以写一个神奇的getter函数并检查属性 like
是否存在public function __get($property)
{
if(property_exists($this, $property) {
return $this->{$property};
}
}
编辑: 实际上,当我再次检查用法时;最好在 class field_seo_multidomain 中有一个方法,这样在这个方法中制作 checks/validations 会更有用
public function getText($lang, $domain){
if(property_exists($this, $lang) {
if(property_exists($this->{$lang}, $domain) {
return $this->{$lang}->{$domain}->field_seo->field_meta_description->value;
}
}
return '';
}
然后 app/view 一方可以跟注;
echo $myObject->field_seo_multidomain->getText($lang_arr[$language], $domains_arr[$domain]);
如果语言 属性 或域 属性 不存在,它只会回显一个空字符串,您也可以使用这种方法添加后备语言功能。