0

在我的项目中,名为 Object_X 的类代表 X 类的单个实例(数据库表中的一行)。

我还必须创建模型来支持这些 Object_X 类。例如:我认为像“isEmailAddressTaken($email)”或“isLogged()”这样的方法(例如对于客户数据库表)应该放在模型(Model_Customer)中,对吗?

现在,如果一个类 Object_X 代表数据库中的一行,而 Model_X 代表一般的 db 表,那么 Model_X 应该是单例吗?

我有点困惑。

4

1 回答 1

0

这取决于任务。除了数据库访问之外,zend 框架还有更多功能,这可能会对您有所帮助。

具体来说,对于任何类型的验证,您都应该Zend_Validate根据需要使用和创建验证器。例如,为了检查电子邮件是否已被占用,您应该声明Application_Validate_UserEmail_NotExistswhich extends 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')) {
    ....
}

要检查用户是否登录,您应该使用Zend_Auth,它提供了各种功能来处理用户身份验证和会话管理。

于 2012-11-28T14:17:08.860 回答