2010-11-10 183 views
0

我正在用PHP寫這篇文章,但一般來說,用戶(註冊?)類具有什麼方法和屬性?我知道我可以使用PEAR中的MDB2進行數據庫抽象,我能想到的一個功能是確保用戶名是有效的。用戶註冊類

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

任何人都可以想到更多?

謝謝。

編輯

用戶名驗證是一類自身的權利(Validator類或某事)呢?

+0

我想,那是的。你應該有一個單獨的類與驗證方法。你也應該清楚地描述,你的問題是什麼,而不是用「(註冊?)」來支持人們。堅持標題。 – Eugene 2010-11-10 15:18:19

回答

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

它應該有不同的設計。如果你使用這樣的邏輯,那麼你應該有一些主要的類和其他驅動程序。像在Zend一樣。如果這些類有靜態方法,它們看起來會更好。 – Eugene 2010-11-10 15:30:01

+0

請記住,在編寫答案時,我一直在發明(不確定這是否正確)。 *應該有一些主要類和其他作爲驅動程序*這適用於什麼?驗證/用戶?詛咒可能是 - 這只是一個例子。 *如果這些類有靜態方法,這些類看起來會更好。*在這個代碼中應該使用何種靜態方法? – Crozin 2010-11-10 19:39:18

+0

我不會同意錯誤處理程序:例外情況是出現特殊錯誤。無效的電子郵件格式是預期的錯誤(大部分時間取決於軟件目標)。 – Antoine 2011-05-29 19:02:58

1

那麼,你應該檢查是否

  • 用戶名已在使用
  • 密碼足夠強大
  • 用戶的郵件地址是有效的

您還需要方法來

  • 創建一個新帳戶
  • 更改用戶資料
  • 刪除現有帳戶?
  • 允許用戶在所有恢復遺忘查詢密碼
+0

Downvote:OOP的基礎:[單一責任原則](http://en.wikipedia.org/wiki/Single_responsibility_principle) – Crozin 2010-11-10 15:07:53

+0

最後一次提出建議是不正確的。你忘了,這不是用戶管理類。只用於註冊。你可能想看看ZF。 – Eugene 2010-11-10 15:08:46

+0

此課程僅負責:管理用戶數據(包括添加,編輯和刪除用戶) – Tokk 2010-11-10 15:09:54

0

ValidForm,它是一個很好的類,可以處理您的表單,無論是客戶端/服務器端。但是,沒有MySQL通過表單傳遞。