最近我试图了解存储库模式以及如何将数据从数据库映射到域模型。我正在使用ZendFramework并尝试在此处实现此模式。
在许多示例和说明中,您可以看到保存像这样的实体的示例:
class UserRepository
{
function add(User $user) {
$this->db->save( $user );
}
}
或者检索像这样的对象
class UserRepository
{
function findById($id) {
return $this->db->fetchAll()->where('id = ' . $id);
}
}
我认为存储库中的$ this-> db可能代表一个tablegateway对象,其作用是将数据带入数据库或检索它们。正确的吗?
以下是我不明白的事情:
首先:为什么tablegateway在实际需要数组推入数据库时会给出一个保存对象? tablegateway真的应该是从对象获取数据并将其保存在数据库中还是要在存储库中准备好的那个?
第二: 检索对象时,为什么将tablegateway返回给需要数据的人? 将数据从数据库(可能以数组或对象形式给出)映射到域模型的位置在哪里?
这对我没有意义。
也许$ this-> db根本不代表一个表格之门,我只是理解这一切都错了。