2011-05-08 61 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。

相关问题