我正在学习MVC(实际上是OOP),并在网上找到了很好的基本概述,但是当我进入一个复杂项目的细节时,我有点不紧张。
我已经设置了一个基本的'用户'模型如下。我想知道模型在什么时候有太多责任?当这种情况发生时,有哪些选择?你应该有子模型 - 例如UserLoginModel而不是一个包罗万象的用户模型?
PS似乎无法粘贴代码,因此它将全部停留在代码块中 - 抱歉。
[uwsgi]
http-socket = 0.0.0.0:8000
chdir = /app
master = true
processes = 4
cheaper = 2
chmod-socket = 664
env = DJANGO_SETTINGS_MODULE=config.settings.local
module = config.wsgi:application
vacuum = true
类UserModel {
//USER MODEL
}
//验证控制器 - 接收请求/ AuthController / doLogin
类AuthController {
private $userId;
private $userName;
private $address
private $email
private $password;
/**
* Some instance of a DB class
*/
private $db;
/**
* Some encryption class which can generate cipher text
*/
private $encryption;
public function __construct($databaseClass){
//some database layer like a table gateway
$this->db = $databaseClass;
//some encryption class which can be used to test a password against a cipher
$this->enc = $encryptionClass;
}
/*
GETTERS/SETTERS...
*/
public function findUser($username){
// 1. Find user in database
// 2. Map database array to properties
// 3. Return boolean
}
public function validateLogin($password){
// 1. Turn $pasword into cipher text using $this->enc class
// 2. Match User object password
// 3. Return boolean
}
public function updateUser($data){
//some code for updating the user
}
public function deleteUser($user){
//code for deleting user
}
}
答案 0 :(得分:0)
模型是设计模式的核心组成部分。它表示应用程序在问题域方面的行为,与用户界面无关。它直接管理应用程序的数据,逻辑和规则。
模型中必须具备所有功能和职责。
Controller接受输入并将其转换为模型或视图的命令。它将通过模型获得函数和/或方法。
视图可以是信息的任何输出表示,也可以是用户输入的数据。
StudentView将是一个可以在控制台上打印学生详细信息的视图类,而StudentController是负责在Student对象中存储数据的控制器类,并相应地更新视图StudentView。