我通過利用__get
魔術方法來定義在訪問不存在的屬性時會發生什麼情況。__get魔術方法 - 如何拋出並捕獲屬性重載的錯誤?
因此,如果$property->bla
不存在,我會得到null
。
return (isset($this->$name)) ? $this->$name : null;
但我想拋出,趕上錯誤$property->bla->bla
當我知道$property->bla
不存在。
與return (isset($this->$name)) ? $this->$name : null;
我會得到下面這個錯誤,
<b>Notice</b>: Trying to get property of non-object in...
所以我在課堂上使用throw and catch
錯誤,
類屬性 {
public function __get($name)
{
//return (isset($this->$name)) ? $this->$name : null;
try {
if (!isset($this->$name)) {
throw new Exception("Property $name is not defined");
}
return $this->$name;
}
catch (Exception $e) {
return $e->getMessage();
}
}
}
但結果不是我所知道的螞蟻因爲它throw
錯誤消息("Property $name is not defined")
而不是null
的$property->bla
。
我該如何才能讓它出錯只有對於$property->bla->bla
,$property->bla->bla->bla
等等?