我们的开发团队正在讨论一个通用的最佳实践: 直接从模型类中的函数访问 session 变量还是将 Controller 中的 session 变量作为参数传递给模型类中的函数更好?请看下面的两个示例:
直接从模型类访问 session 变量以在查询中使用:
class MyModel {
public function getUserPrefs($userID) {
$this->query("SELECT * FROM my_table WHERE id=$_SESSION['userID']");
}
}
或者将 session 变量作为函数参数从 Controller 传递给模型类中的函数:
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");
}
}
将它从 Controller 传递给模型的原因是所有引用的数据都来自一个入口点,即 Controller 。
公认的更好做法是什么?
最佳答案
第二个版本(将 $_SESSION['userId'] 作为参数传递给该方法)会产生一个更加解耦的类,因此更加灵活。随它去吧。
关于PHP MVC 最佳实践 - 将 session 变量从 Controller 传递到模型类或直接在模型中访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4502684/