PHP MVC 最佳实践 - 将 session 变量从 Controller 传递到模型类或直接在模型中访问

标签 php model-view-controller design-patterns session

我们的开发团队正在讨论一个通用的最佳实践: 直接从模型类中的函数访问 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/

相关文章:

php - Mysql 2 select all 语句无法正常工作

java - Android 从 TypedArray 获取字符串数组

php - ZF2 headLink 辅助订购

c# MVC - 文件夹结构 - 在哪里放类?

c# - 在 .NET 中使用来自另一个程序集的抽象类

php - 推特线程对话

php - Zend 框架 MVC 设计

java - 如何使用 TDD 方法为简单的购物车示例设计类?

javascript - 使用独立脚本扩展脚本,同时保持全局空间清洁

php - mysql查询如何使用其顶行的值和内容填充空白行?