w00*_*w00 10 php oop design-patterns ddd-repositories repository-pattern
我试图弄清楚Repository模式如何工作以及如何在自定义MVC模式中实现它.
据我所知,Repository是一个简单地从实体类返回数据或将实体类保存到持久层的层.
现在我现在看到它是这样的:
请求进入我的控制器以创建用户.只是一个用户名和密码.我的控制器将执行以下操作:
function CreateAction ( )
{
$userRepo = new userRepository ( );
$user = new userEntity ( );
$user->setUsername('user');
$user->setPassword('123456');
$userRepo->create($user);
}
Run Code Online (Sandbox Code Playgroud)
然后我的userRepository类看起来像这样:
class userRepository
{
public function create ( User $user )
{
$this->db->exec ( "INSERT INTO ... QUERY TO SAVE THE USER" );
}
}
Run Code Online (Sandbox Code Playgroud)
我的userEntity类看起来像这样:
class userEntity
{
private $username;
private $password;
public function setUsername ( $username )
{
$this->username = $username;
}
public function getUsername ( )
{
return $this->username;
}
public function setPassword ( $password )
{
$this->password = $password;
}
public function getPassword ( )
{
return $this->password;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我认为第一件事是错误的是我在存储库类中使用了一个查询.我在哪里实际将userEntity类保存到数据库?换句话说,我在哪里执行实际的SQL查询?我想正确的方法是在存储库的'create'方法中调用DAO.但我仍然试图弄清楚DAO的真实外观以及与MVC模式中的模型相比有多么不同.
但除此之外,这是实现存储库模式的正确方法吗?
Gor*_*don 12
您的存储库对我来说看起来更像是TableDataGateway.存储库的想法是在映射层之上的另一层,它在域对象和数据库之间进行调解.它还可以作为域对象的内存存储(您的示例中缺少某些内容),并且可以封装Factory以创建新实体.它们通常还允许按规范模式查询存储库:

这是一个相当复杂的模式.你可以在里面找到关于Repository的好文章
还要检查Good Domain Driven Design示例
| 归档时间: |
|
| 查看次数: |
4183 次 |
| 最近记录: |