Estoy tratando de averiguar cómo funciona el patrón Repositorio y cómo se puede implementar en un patrón MVC personalizado.Configuración de un patrón de repositorio en MVC
Por lo que yo entiendo, el Repositorio es una capa que simplemente devuelve datos de una clase de entidad o guarda la clase de entidad en una capa persistente.
Ahora que actualmente lo ven así:
llega una petición en mi controlador para crear un usuario. Solo un nombre de usuario y contraseña. Mi controlador hacer algo como esto:
function CreateAction ()
{
$userRepo = new userRepository ();
$user = new userEntity ();
$user->setUsername('user');
$user->setPassword('123456');
$userRepo->create($user);
}
Entonces mi userRepository clase se parece a esto:
class userRepository
{
public function create (User $user)
{
$this->db->exec ("INSERT INTO ... QUERY TO SAVE THE USER");
}
}
Y mi userEntity clase se ve así:
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;
}
}
Ahora Lo primero que creo que está mal aquí es que estoy usando una consulta dentro de la clase del repositorio. ¿Dónde guardo realmente la clase userEntity en la base de datos? Entonces, en otras palabras, ¿dónde realizo las consultas SQL reales? Supongo que la forma correcta sería llamar a un DAO dentro del método 'crear' del repositorio. Pero aún estoy intentando descubrir cómo se ve realmente un DAO y qué tan diferente es comparado con un 'Modelo' en términos del Modelo en un patrón MVC.
Pero, aparte de eso, ¿es esta la forma correcta de implementar el patrón de repositorio?
Se ve bastante bien conmigo.El repositorio es el lugar correcto para sql. Puede que desee echarle un vistazo al manual ORM de Doctrine2 solo por ideas. – Cerad