我正在用PHP寫這篇文章,但一般來說,用戶(註冊?)類具有什麼方法和屬性?我知道我可以使用PEAR中的MDB2進行數據庫抽象,我能想到的一個功能是確保用戶名是有效的。用戶註冊類
$user->validateUserName($username, $regex);
任何人都可以想到更多?
謝謝。
編輯:
用戶名驗證是一類自身的權利(Validator類或某事)呢?
我正在用PHP寫這篇文章,但一般來說,用戶(註冊?)類具有什麼方法和屬性?我知道我可以使用PEAR中的MDB2進行數據庫抽象,我能想到的一個功能是確保用戶名是有效的。用戶註冊類
$user->validateUserName($username, $regex);
任何人都可以想到更多?
謝謝。
編輯:
用戶名驗證是一類自身的權利(Validator類或某事)呢?
不應該有這樣一個班。註冊是一個接收數據,驗證數據並最終在驗證成功時處理驗證數據的整個過程。換句話說,註冊是使用某個對象來解決給定問題的那部分代碼。
您需要什麼?
User
對象並將其保存。讓我們來設計一個接口。我們將如何使用我們要編寫的代碼?
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
}
這當然只是一個例子 - 它可以完全不同的方式設計。
它應該有不同的設計。如果你使用這樣的邏輯,那麼你應該有一些主要的類和其他驅動程序。像在Zend一樣。如果這些類有靜態方法,它們看起來會更好。 – Eugene 2010-11-10 15:30:01
請記住,在編寫答案時,我一直在發明(不確定這是否正確)。 *應該有一些主要類和其他作爲驅動程序*這適用於什麼?驗證/用戶?詛咒可能是 - 這只是一個例子。 *如果這些類有靜態方法,這些類看起來會更好。*在這個代碼中應該使用何種靜態方法? – Crozin 2010-11-10 19:39:18
我不會同意錯誤處理程序:例外情況是出現特殊錯誤。無效的電子郵件格式是預期的錯誤(大部分時間取決於軟件目標)。 – Antoine 2011-05-29 19:02:58
那麼,你應該檢查是否
您還需要方法來
ValidForm,它是一個很好的類,可以處理您的表單,無論是客戶端/服務器端。但是,沒有MySQL通過表單傳遞。
我想,那是的。你應該有一個單獨的類與驗證方法。你也應該清楚地描述,你的問題是什麼,而不是用「(註冊?)」來支持人們。堅持標題。 – Eugene 2010-11-10 15:18:19