Configurando um padrão de repositório no MVC
Estou tentando descobrir como o padrão de repositório funciona e como ele pode ser implementado em um padrão MVC personalizad
Pelo que entendi, o Repositório é uma camada que simplesmente retorna dados de uma classe de entidade ou salva a classe de entidade em uma camada persistent
Agora, atualmente, vejo assim:
Um pedido entra no meu controlador para criar um usuário. Apenas um nome de usuário e senha. Meu controlador fará algo assim:
function CreateAction ( )
{
$userRepo = new userRepository ( );
$user = new userEntity ( );
$user->setUsername('user');
$user->setPassword('123456');
$userRepo->create($user);
}
Então meu userRepository class fica assim:
class userRepository
{
public function create ( User $user )
{
$this->db->exec ( "INSERT INTO ... QUERY TO SAVE THE USER" );
}
}
E meu userEntity class fica assim:
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;
}
}
Agora, a primeira coisa que acho errada aqui é que estou usando uma consulta dentro da classe do repositório. Onde eu realmente salvo a classe userEntity no banco de dados? Então, em outras palavras, onde eu executo as consultas SQL reais? Eu acho que a maneira correta seria chamar um DAO dentro do método 'create' do repositório. Mas ainda estou tentando descobrir como um DAO realmente parece e quão diferente é comparado a um 'Model' em termos de Model em um padrão MV
Mas, fora isso, essa é a maneira correta de implementar o padrão de repositório