2010-11-10 1 views
0

Я пишу это на PHP, но, вообще говоря, какие методы и свойства были бы у класса пользователя (регистрации?)? Я знаю, что я могу использовать MDB2 из PEAR для абстракции базы данных, и одна из возможностей, о которой я могу думать, - убедиться, что имя пользователя действительно.Класс регистрации пользователя

$user->validateUserName($username, $regex); 

Может ли кто-нибудь еще подумать?

Спасибо.

Edit:

проверка Имя пользователя будет класс сам по себе (класс Validator или что-то)?

+0

думаю, это да. У вас должен быть отдельный класс с методами проверки. Также вы должны четко описать, каков ваш вопрос и не путать людей с поддержкой «(регистрация?)». Придерживайтесь названия. – Eugene

ответ

0

Там не должно быть такого класса вообще. Регистрация - это целый процесс получения данных, проверки этих данных и, наконец, обработки проверенных данных, если проверка прошла успешно. Другими словами: регистрация - это часть кода, которая использует некоторый объект для решения данной проблемы.

Что вам нужно?

  1. Объект, представляющий одного пользователя.
  2. Объект, который принимает объект User и сохраняет его.
  3. Некоторые механизмы проверки (он будет использовать по крайней мере несколько объектов).

Давайте разработаем интерфейс. Как мы будем использовать код, который мы собираемся написать?

try { 
    $validator = new Validator($_POST); 
    $validator->addRules(array(
     'username' => new LengthValidator(array('min' => 3, 'max' => 15)), 
     'password' => array(
      new LengthValidator(array('min' => 6)) 
      new RegexpValidator(array('pattern' => '#...#')) 
     ), 
     'email' => array(
      new EmailValidator(), 
      new UniqueValidator(....) 
     ) 
    )); 

    $data = $validator->validate(); 

    $userService = new UserService($databaseHandler, $someOtherArguments); 

    $user = new User(); 
    $user->setUsername($data['username']); 
    $user->setPassword($data['password']); 
    $user->setEmail($data['email']); 
    $user->setFirstname($data['firstname']); 
    $user->setLastname($data['lastname']); 

    $userService->save($user); 
} catch (ValidationException $ve) { 
    // validation failed 
} 

Это, конечно, только пример - он может быть разработан совершенно по-другому.

+0

Он должен быть спроектирован по-разному. Если вы используете такую ​​логику, то в качестве драйверов вы должны иметь какой-то основной класс и другие. Как в Зенде. Также такие классы выглядят лучше, если у них есть статические методы. – Eugene

+0

Пожалуйста, имейте в виду, что я изобретал (не уверен, что это подходящее слово в этом контексте;]) этот код во время написания ответа. * должен иметь некоторый основной класс и другие как драйверы * Это относится к чему? Проверка/пользователя? Проклятие это может быть - это всего лишь пример. * Также такие классы выглядят лучше, если у них есть статические методы. * Где именно статический метод должен использоваться в этом коде? – Crozin

+0

Я не соглашусь с обработчиком ошибок: исключения для исключительных ошибок. Недопустимый формат электронной почты является ожидаемой ошибкой (большую часть времени зависит от целей программного обеспечения). – Antoine

1

Ну, вы должны проверить, если

  • Имя пользователя уже используется
  • Password достаточно сильна
  • Почтовый адрес пользователя является действительным

Вы также нужны методы для

  • Создайте новый аккаунт
  • изменение Данные пользователя
  • удалить существующую учетную запись?
  • позволяют пользователям восстанавливать забытые PWS
+0

Downvote: основы ООП: [принцип единой ответственности] (http://en.wikipedia.org/wiki/Single_responsibility_principle) – Crozin

+0

Все последние предложения неверны. Вы забываете, что это не пользовательский класс. Это только для регистрации.Вы можете посмотреть в ZF. – Eugene

+0

Этот класс несет ответственность только за управление: Управление данными пользователя (включая добавление, изменение и удаление пользователя) – Tokk

0

ValidForm, это отличный класс, структурированный для обработки ваших форм, как клиентских, так и серверных. Тем не менее, MySQL не проходит через форму.

 Смежные вопросы

  • Нет связанных вопросов^_^