我想知道存儲庫模式如何工作以及如何在自定義MVC模式中實現它。在MVC中設置存儲庫模式
據我瞭解,Repository是一個只從實體類返回數據或將實體類保存到持久層的層。
現在我現在所看到這樣的:
請求進入到我的控制器創建一個用戶。只需一個用戶名和密碼。我的控制器會做這樣的事情:
function CreateAction ()
{
$userRepo = new userRepository ();
$user = new userEntity ();
$user->setUsername('user');
$user->setPassword('123456');
$userRepo->create($user);
}
然後我userRepository類看起來是這樣的:
class userRepository
{
public function create (User $user)
{
$this->db->exec ("INSERT INTO ... QUERY TO SAVE THE USER");
}
}
而且我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;
}
}
現在我認爲這裏錯誤的第一件事是我在存儲庫類中使用查詢。我在哪裏實際將userEntity類保存到數據庫?換句話說,我在哪裏執行實際的SQL查詢?我想正確的方法是在存儲庫的'create'方法內調用DAO。但是我仍然試圖弄清楚DAO的真實外觀,以及它與MVC模式中的Model有何不同。
但除此之外,這是實施存儲庫模式的正確方法?
對我來說看起來不錯。存儲庫是sql的正確位置。可能想看看Doctrine2 ORM手冊僅僅是爲了想法。 – Cerad 2012-02-11 22:37:20