我们的开发团队正在讨论一般的最佳实践:直接从模型类中的函数访问会话变量或将控制器中的会话变量作为参数传递给模型类中的函数是否更好.请看下面的两个例子:
直接从模型类访问会话变量以在查询中使用:
class MyModel {
public function getUserPrefs($userID) {
$this->query("SELECT * FROM my_table WHERE id=$_SESSION['userID']");
}
}
Run Code Online (Sandbox Code Playgroud)
或者将会话变量从控制器传递给模型类中的函数作为函数参数:
class MyController {
public function displayUsers() {
$this->model->getUserPrefs($_SESSION['userID']);
}
}
class MyModel {
public function getUserPrefs($userID) {
$this->query("SELECT * FROM my_table WHERE id=$userID");
}
}
Run Code Online (Sandbox Code Playgroud)
从控制器传递给模型的原因是所有引用的数据都来自一个入口点,即控制器.
什么是公认的更好的做法?
我正在与合同开发人员合作,他们开始创建表(MySQL)而没有定义主键.相反,他正在使用带有AUTO_INCREMENT的UNIQUE约束来定义列.我以前从未见过这样做过,所以我想了解以这种方式定义表的含义.一个缺点是如果需要就无法创建外键. 以这种方式创建表格有什么其他影响,无论好坏.也许我在这里错过了一个概念......