好的,所以我调用了我的 DomainObject/Model$user
和我的$userDAO
对象。
从我目前所读的内容来看,当我需要执行 CRUD 操作(例如获取$user
我刚刚执行的对象)时:
$user = $userDAO->fetchById($userId);
这将返回我的$user
对象。
显然 DomainObject 不应该知道 DAO 对象存在,反之亦然,但是如果用户正在注册并且我运行该$user->register()
方法怎么办
$user->register($firstName, $lastName, $emailAddress, $username, $password etc.);
在该方法的某个地方,我需要检查所选用户名是否已被使用,并且与电子邮件地址相同。
我能想到的唯一方法是$userDAO
在我的对象中有一个对象的实例,$user
然后进行如下验证:
if($this->userDAO->isUsernameTaken($username)) {
// the username is already in use
}
else {
// continue on
}
但这会打破 DomainObject 不应该知道数据库内容的规则,反之亦然,但我认为 DomainObject 并不真正了解数据库内容,因为所有查询都在 DAO 对象中,它只包含对一个对象,但它不明确知道该对象中发生了什么。我是对还是错?
如果我做错了,我应该如何运行一个方法,比如$user->register()
需要在其中调用一些需要访问数据源的数据库查询,但是不允许 DomainObject/Model 知道任何数据源,所以专家说?
我今天在谷歌上找到了页码,我以为我永远不必继续,但我仍然找不到任何非常可靠的现实生活例子,我开始发疯,因为它减慢了一切.
任何帮助,将不胜感激。谢谢。