模型和数据访问对象,应该传递哪些以及应该传递什么


Models and Data Access Objects, which should be passed and what should be passed

我试图让我的模型不了解sql代码和连接,所以我试图实现一个所谓的"数据访问对象"/"dao"。

我的模型表示数据库中的表,以及数据库字段的属性,例如loginModel

class LoginModel {
   private $user;
   private $pass;
   private $salt;
   private $ip;
   private $agent;
   // getters and setters e.g.
   public function getUser() {
       return $this->user;
   }
   public function setUser($user) {
       $this->user = $user;
   }
   // or for example magic methods -> just for example
   public function __get($key) {
       return $this->$key;
   }
   public function __set($key, $value) {
       $this->$key = $value;
   }
}

在我的开发中,我认为我做了错误的事情,在我看来或在我的控制器中,我这样做:

$loginModel = new LoginModel();
$loginModel->setUser('$_POST["user"]');
$loginDAO = new LoginDAO($loginModel);
echo $loginDAO->getResults();

这样做正确吗?或者我应该先在DAO中读取流程中的POST变量,然后设置模型的属性?

如果您想进一步将其抽象到涉及多种类型存储的不同场景中,您可能需要查看Factory Pattern。

编辑:再看一遍你的问题,意识到你不需要一半的答案,但我删除了以下内容:


你设计模型的方式可能会让事情变得有点混乱。尝试将模型设计为对象而不是过程。

登录过程将由控制器处理,而模型将负责从数据库中获取信息。这意味着您可以使用控制器中的模型来完成任务。