2011-05-08 60 views
0

全部。這裏是情況,我有php頁面,它正在做一些註冊,登錄,這些與用戶有關的事情,所以,讓我們稱之爲user.php。在這種情況下是否需要製作對象?

在user.php的,我有一個用戶類有以下幾種方法:

-public static function register($aEmail, $aPassword) 
-public static function login($aEmail, $aPassword) 
-public static function logout($aEmail, $aSessionKey) 

因此,當用戶登錄時,我會做這樣的事情:

if(isset($_POST["email"]) && isset($_POST["password"]) && isset($_POST["action"])){ 
    $email = htmlspecialchars($_POST["email"]); 
    $password = htmlspecialchars($_POST["password"]); 

if($_POST["action"] == login){ 
    $user = new User(); 
    //It will print the session key 
    $user->doLoginAndPrintTheSessionKey($email, $password); 
} 

它的偉大工程,但問題是,如果我只將用戶作爲對象或單身人士,似乎沒有意義保留User對象,因爲當用戶發出請求時,我需要使用他的電子郵件和會話密鑰來查找與他的交易記錄.....

這樣的..

public static function postAComment($aEmail, $aSessionKey, $aCommment){ 
    BOOL $isSuccess = FALSE; 

     //check the session key is valid or not 
    if(self::isUserValidationValid($aEmail, $aSessionKey)){ 
     //make a sql statement that write aComment to DB 

     //execute the sql statement 

     //if execute success, return isSuccess = TRUE; 

    } 

    return $isSuccess;  
} 

正如你所看到的,我可以做到這一切在一個單獨的類,所以,我的問題是......有沒有必要做一個useer對象在這情況?謝謝。

回答

1

應用單例模式在這裏沒有任何好處。它很少用像PHP這樣的腳本語言。您通過添加模擬單身人士所需的額外邏輯來完成任何事情(無論如何PHP都不允許)。

最後,可能有些情況下,您可能想要創建兩個用戶對象。想想一個管理工具,可以掃描重複的用戶帳戶。這可能不在你的名單上,對於大多數網站來說可能是毫無意義的,但是你不能完全排除你在某些時候可能需要以這種方式利用你的用戶類。

與「單身人士」的事情是,他們有一個吸引人的名字,但不是很多的應用程序。忘掉它。 http://sites.google.com/site/steveyegge2/singleton-considered-stupid


但我猜你的主要問題是關於只使用一個靜態方法來處理一切。是的,這是有道理的。如果你實際上沒有用例來實例化一個用戶對象,那就不要這樣做。創建一個實用程序方法,如果這是你可以擺脫。 http://en.wikipedia.org/wiki/KISS_principle

2

你應該創建一個User類但它不應該是一個單例。

擁有User對象可以簡化您的API。你會:

register($aPassword) 
    login($aPassword) 
    logout($aSessionKey) 

相反的:

register($aEmail, $aPassword) 
login($aEmail, $aPassword) 
logout($aEmail, $aSessionKey) 

您可以通過構造函數傳遞$ aEmail。

相關問題