2012-05-28 74 views
2

一旦我看到有人爲__get方法使用以下代碼,它看起來很優雅,所以我複製了。獲取對象屬性,我應該拋出異常嗎?

public function __get($param) 
{ 
    if (!isset($this->params[$param])) { 
     throw new Exception("Property doesn't exist"); 
    } 
    return $this->params[$param]; 
} 

但現在看來,太多的基礎上的財產是否存在這樣一個簡單的動作時,處理異常。 在這種情況下做什麼更好的事情。返回NULL,然後檢查足夠?

回答

0

在php中,這不是一個特殊的情況,不像其他一些語言。我同意你的看法,除非有特殊情況發生,否則例外情況太劇烈。

我會傾向於模仿預期的行爲是在PHP中,這是返回null,triggerE_NOTICE水平或E_USER_NOTICE的誤差值正常。當您嘗試讀取未定義的屬性,數組指示或變量時,這是正常行爲。

btw-你也可能對執行魔術感興趣__isset方法

0

我會說,返回NULL和檢查是不夠的,雖然這將取決於你的應用程序做什麼。

如果你的類在運行時創建了屬性,那麼可能拋出一個異常是很好的,但是如果所有的屬性在編譯時都存在,那麼NULL是最好的。