2010-06-25 58 views
1

我已經注意到,大多數的基於PHP的庫或框架上課不明確地返回關鍵字真假,而是:OOP設計:返回一個布爾值屬性,而不是明確地返回TRUE或FALSE

if(condition) 
{ 
    $this->boolean_property = FALSE; 
    return $this->boolean_property 
} 

這是否意味着什麼?還是僅僅是另一種「純粹主義」舉動,與其他方法相比,它沒有任何優勢?

這裏是從認證庫的另一個代碼:

protected $_logged_in = false; 

public function is_logged_in() 
{ 
if (isset($_SESSION['userdata']) 
{ 
    $this->_logged_in = true; 
} 
return $this->_logged_in; 
} 
+0

它看起來像從PHP v4解決方案到解決問題的退步:如果函數返回一個引用,則必須返回一個變量。常量不起作用,另一個函數也不會調用。 – staticsan 2010-06-25 06:08:09

回答

0

第二個例子很有意義,可能該類正在檢查後期的$_logged_in屬性。

第一個可以簡化爲:

return $this->boolean_property = FALSE; 

但是它似乎仍然愚蠢本身,和一個簡單的return false;將是可取的。

+0

你會舉出「它」不是「本身」並且這種方法會被證明是有益的例子嗎? – yretuta 2010-06-25 03:41:52

+0

@Ygam:在返回之前將布爾值存儲在對象屬性(或該變量)中唯一有利的情況是需要在後一階段檢查結果。 – 2010-06-25 12:02:11

0

它仍然返回FALSE。這也只是設置一個實例字段,大概是這樣你可以稍後查詢它。一個真實的例子可能會進一步澄清事情。你在哪裏看到這個代碼?