Нужно ли делать Объект в этой ситуации? - PullRequest
0 голосов
/ 08 мая 2011

все. Вот ситуация, у меня есть страница 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); 
}

Это прекрасно работает, но вопрос в том, должен ли я сделать пользователя только объектом или одиночным, кажется, что нет смысла сохранять объект пользователя, потому что когда пользователь делает запрос, мне нужно использовать его электронную почту и сеанс. ключ, чтобы найти дело со своими записями .....

как это ..

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;      
}

Как видите, я могу сделать все это в одноэлементном классе, поэтому мой вопрос ... ... Нет ли необходимости создавать объект-пользователь в этой ситуации? Спасибо.

Ответы [ 2 ]

2 голосов
/ 08 мая 2011

Вы должны создать класс User, но он не должен быть одиночным.

Наличие объекта User упростит ваш API. Вы бы:

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

Вместо:

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

Вы передаете $ aEmail через конструктор.

1 голос
/ 08 мая 2011

Применение шаблона синглтона не добавляет здесь никаких преимуществ.Это редко происходит на языке сценариев, таких как PHP.Вы ничего не добьетесь, добавив дополнительную логику, необходимую для симуляции одиночного (PHP все равно не допускает реальных).

И, наконец, могут быть обстоятельства, когда вам все-таки может понадобиться создать два пользовательских объекта.Подумайте об инструменте администрирования, который позволяет сканировать дубликаты учетных записей пользователей.Это, вероятно, не занимает первое место в вашем списке, и, вероятно, бессмысленно для большинства веб-сайтов, но вы не можете полностью исключить, что вам когда-нибудь может понадобиться использовать ваш класс пользователей таким образом.есть броское имя, но не много приложений.Просто забудь об этом.http://sites.google.com/site/steveyegge2/singleton-considered-stupid


Но я думаю, что ваш главный вопрос был об использовании статического метода для обработки всего.И да, это имеет смысл.Если на самом деле у вас нет варианта использования для создания экземпляра пользовательского объекта, то не делайте этого.Создайте служебный метод, если это то, что вы можете избежать.http://en.wikipedia.org/wiki/KISS_principle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...