这些模型应该是单身吗? (Zend框架)

时间:2012-11-28 13:16:00

标签: model-view-controller zend-framework models

在我的项目中,名为Object_X的类表示X类的单个实例(db表中的一行)。

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

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

我有点困惑。

1 个答案:

答案 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')) { .... } ,它提供了各种功能来处理用户身份验证和会话管理。