Я пытаюсь понять, как работает шаблон репозитория и как его можно реализовать в пользовательском шаблоне MVC.
Насколько я понимаю, репозиторий - это уровень, который просто возвращает данные из класса сущности или сохраняет класс сущности на постоянном уровне.
Сейчас я вижу это так:
В мой контроллер поступает запрос на создание пользователя. Просто логин и пароль. Мой контроллер будет делать что-то вроде этого:
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? Я думаю, что правильным способом было бы вызвать DAO внутри метода создания репозитория. Но я все еще пытаюсь понять, как на самом деле выглядит DAO и насколько он отличается от «Модели» с точки зрения модели в шаблоне MVC.
Но кроме этого, является ли это правильным способом реализации шаблона репозитория ??