I'm trying to figure out how the Repository pattern works and how it can be implemented in a custom MVC pattern.
As far as i understand it, the Repository is a layer which simply returns data from an entity class or saves the entity class to a persistent layer.
Now i currently see it like this:
A request comes in into my controller to create a user. Just a username and password. My controller will do something like this:
function CreateAction ( )
{
$userRepo = new userRepository ( );
$user = new userEntity ( );
$user->setUsername('user');
$user->setPassword('123456');
$userRepo->create($user);
}
Then my userRepository class looks like this:
class userRepository
{
public function create ( User $user )
{
$this->db->exec ( "INSERT INTO ... QUERY TO SAVE THE USER" );
}
}
And my userEntity class looks like this:
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;
}
}
Now the first thing that i think is wrong here is that i'm using a query inside the repository class. Where do i actually save the userEntity class to the database? So in other words, where do i perform the actual SQL queries? I guess the proper way would be to call a DAO inside the 'create' method of the repository. But i'm still trying to figure out how a DAO really looks and how different it is compared to a 'Model' in terms of the Model in a MVC pattern.
But other than that, is this the proper way of implementing the repository pattern??