我试图让我的模型不知道sql代码和连接,所以我试图实现一个所谓的“数据访问对象”/“dao”。
我的模型表示数据库中的表,以及它对db字段的属性,例如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
变量的过程,然后设置模型的属性?
答案 0 :(得分:0)
如果您想进一步将其抽象为涉及多种类型存储的不同方案,您可能需要查看Factory Pattern。
编辑:再次看了你的问题,意识到你不需要一半的答案,但这就是我删除的内容:
您设计模型的方式可能会让事情变得有些混乱。尝试将模型设计为对象而不是过程。
登录过程将由控制器处理,而模型则负责从数据库中获取内容。这意味着您可以在控制器内部使用模型作为完成任务的方法。