2012-04-27 90 views
2

我有中創建用戶類的對象,但如果用戶沒有找到我需要返回的東西的方法,但我不知道是什麼:我應該返回false,異常等

function getUserById($id) 
{ 
    $sth = $this->db->prepare("SELECT id, username, password, salt, email, created, last_active FROM users WHERE id = ?"); 
    $sth->execute(array($id)); 

    $sth->setFetchMode(PDO::FETCH_OBJ); 

    if ($sth->rowCount() == 0) { 
     //return what? 
    } 

    $row = $sth->fetch(); 
    $user = new User($row); 

    return $user; 
} 

而且方法應該是使用這樣的事:

$user = $user_mapper->getUserById($id); 

的問題是我應該如何處理如果沒有找到用戶?我應該使用try catch塊,然後在rowCount == 0 if語句中引發異常,或者只是在將$ user變量設置爲對象時返回false並使用if語句?

+0

我覺得返回false就夠了,跟蹤任何其他方法,讓我們等待答案 – nu6A 2012-04-27 09:28:29

回答

5

這完全取決於您和您的錯誤處理理念。

我決定這是基於:這是一個例外事件?這應該永遠不會發生?
如果答案是,則拋出異常。如果答案是這可能發生,我只需要處理這種情況,return false

+3

+1這是個很好的答案 – freshnode 2012-04-27 09:29:25

+1

也許考慮返回'null'?它講述了整個故事(*沒有*用戶被發現)。 – kapa 2012-04-27 09:30:11

+0

@baž我寧願'錯誤'。不返回值的函數的返回值已經是'null','false'通常用來表示「你嘗試過的東西沒有工作」。 – deceze 2012-04-27 09:34:14

1

我會返回null。此功能具有單一響應能力:嘗試根據其ID找到用戶。如果它沒有發現,那麼它沒有發現,而「零」就是這樣說的。 之後,調用這個函數的代碼應該可以處理這個問題。

現在,由於您正在通過其id找到用戶,而不是通過登錄名/密碼,所以您應該也會拋出一個異常:因爲您的應用程序中可能存在某些錯誤:如果您有一個ID,它應該鏈接到數據庫中的某些東西。

相關問題