在我的项目中,名为Object_X的类表示X类的单个实例(db表中的一行)。
我还必须创建模型,以支持这些Object_X类。例如:我认为像“isEmailAddressTaken($ email)”或“isLogged()”(例如客户数据库表)这样的方法应该放在模型中(Model_Customer),是吗?
现在,如果一个Object_X类代表数据库中的一行而Model_X一般代表db表,那么Model_X应该是一个单独的吗?
我有点困惑。
答案 0 :(得分:0)
这取决于任务。除了数据库访问之外,zend框架还有更多功能,这可能会对您有所帮助。
具体来说,对于任何类型的验证,您应该使用Zend_Validate
并根据需要创建验证器。例如,要检查是否已收到电子邮件,您应声明扩展Application_Validate_UserEmail_NotExists
的{{1}}。然后你就可以在任何你需要的地方使用那个vaildator类(特别是在表单中)
Zend_Validate_Abstract
要检查用户是否已登录,您应该使用<?php
class Application_Validate_UserEmail_NotExists extends Zend_Validate_Abstract
{
const REGISTERED_USER_EMAIL = 'invalid';
const REGISTERED_USER_EMAIL_MESSAGE = 'Email already registered';
protected $_messageTemplates = array(
self::REGISTERED_USER_EMAIL => self::REGISTERED_USER_EMAIL_MESSAGE,
);
public function isValid($value)
{
$modelUsers = new Model_Users();
$user = $modelUsers->fetchRegisteredWithEmail($value);
if (is_object($user)) {
$this->isAlreadyRegisteredError = true;
$this->_error(self::REGISTERED_USER_EMAIL);
return false;
}
return true;
}
}
$validator = new Application_Validate_UserEmail_NotExists();
if ($validator->isValid('email@domain.com')) {
....
}
,它提供了各种功能来处理用户身份验证和会话管理。