PHP MVC最佳实践 - 将Session变量传递给控制器的模型类或直接在模型中访问
我们的开发团队正在讨论一般的最佳实践:
是直接从模型类中的函数访问会话变量还是将会话变量从控制器作为参数传递给模型类中的函数更好。请看下面的两个例子:
直接从模型类访问会话变量以在查询中使用:
class MyModel {
public function getUserPrefs($userID) {
$this->query("SELECT * FROM my_table WHERE id=$_SESSION['userID']");
}
}
或者将会话变量从控制器传递给模型类中的函数作为函数参数:
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");
}
}
从控制器传递给模型的原因是所有引用的数据都来自一个入口点,即控制器。
什么是公认的更好的做法?
没有找到相关结果
已邀请:
4 个回复
氮顺
览幕堤分
但是,如果您现在要使用用户查找功能构建管理功能,该怎么办?您的模型是硬编码的,以使用会话的user_id,但您希望能够传递自己的ID。你会更好:
并在你的控制器
但是,在这种情况下,我真的会考虑使您的代码更加灵活:
这允许您在一个查询中获得多个用户!哪种方式更有效率。然后,在您的视图中:
您还应该考虑为用户使用singelton类来限制数据库负载。创建一个名为CurrentUser的不变实例类(例如),如:
这是单例类的一个非常基本的例子,并且缺少很多东西。如果您想了解有关单身人士课程的更多信息,请发布另一个问题。
好按紊叉
澳绍能
或
。