我正在用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