J'essaie de comprendre comment fonctionne le modèle Repository et comment il peut être implémenté dans un modèle MVC personnalisé. Dans la mesure où je le comprends, le Repository est une couche qui renvoie simplement des données d'une classe d'entité ou enregistre la classe d'entité dans une couche persistante.Configuration d'un modèle de référentiel dans MVC
Maintenant, je vois actuellement comme ceci:
Une demande vient dans mon contrôleur pour créer un utilisateur. Juste un nom d'utilisateur et mot de passe. Mon contrôleur fera quelque chose comme ceci:
function CreateAction ()
{
$userRepo = new userRepository ();
$user = new userEntity ();
$user->setUsername('user');
$user->setPassword('123456');
$userRepo->create($user);
}
Alors mon userRepository classe ressemble à ceci:
class userRepository
{
public function create (User $user)
{
$this->db->exec ("INSERT INTO ... QUERY TO SAVE THE USER");
}
}
Et mon userEntity classe ressemble à ceci:
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;
}
}
maintenant la première chose que je pense est faux ici est que j'utilise une requête à l'intérieur de la classe de dépôt. Où puis-je enregistrer la classe userEntity dans la base de données? Donc, en d'autres termes, où puis-je effectuer les requêtes SQL réelles? Je suppose que la bonne façon serait d'appeler un DAO à l'intérieur de la méthode 'create' du référentiel. Mais j'essaie toujours de comprendre à quoi ressemble un DAO et à quel point il est différent d'un 'Model' en termes de Model dans un pattern MVC.
Mais à part cela, est-ce la bonne façon d'implémenter le modèle de dépôt?
Ça me semble plutôt bien.Le référentiel est l'emplacement correct pour sql. Peut-être voudrez-vous jeter un coup d'œil au manuel Doctrine2 ORM juste pour avoir des idées. – Cerad