MVC 中数据访问层和模型之间的差异
我已经在几个Web应用程序中实现了我认为相当不错的MVC表示形式,但是自从加入crackoverflow以来,我发现也许我最初的定义有点简单,因此我真的很想澄清一下数据访问层与Web应用程序的模型或域层之间的差异。
对于上下文,我目前使用数据访问对象,这些对象为对象表示的表中的单个记录实现 CRUD 函数,以及返回一个对象的 get() 函数,该对象允许我循环访问满足 get() 函数条件的所有对象。
这些数据访问对象直接从包含我的业务逻辑的控制器脚本中引用。
如果这很重要,我正在使用PHP和MySQL,但我对可能用其他语言编码的建议感兴趣。
更新:对于更具体的例子,我有一个名为user的表(这里的约定是单数表名),其中包含诸如电子邮件地址,活动状态,用户名,密码,它们所属的公司等信息。此基本对象在代码中如下所示:
class User implements DataAccessObject
{
protected $user_id;
protected $email;
protected $username;
protected $password;
protected $company_id;
protected $active // Bool that holds either a 0 or 1
public function __construct ( $user_id ) // Uses Primary Key to know which record to construct
{
$sql = //Sql to get this information from the database.
// Code necessary to assign member variables their values from the query.
}
public function insert(){}
public function update(){}
public function delete(){}
public static function get($filters, $orderVals, $limit){}
// An object such as user might also contain the following function definition
public static function login($username, $password){}
}
听起来我可能已经将DAO层和模型层混蛋化为简化的形式,将任何实际类型的功能(例如用户登录)与数据访问功能相结合。