加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

PHP MVC – 在控制器或模型中存储用户变量?

发布时间:2021-08-28 03:43:00 所属栏目:大数据 来源: https://www.jb51.cc
导读:在Controller或Model中存储变量的最佳实践是什么? 例如,当脚本被执行时.它从会话中获取用户ID并获取它的用户类型,超级管理员,管理员,服务代表,销售代表.我们还检查用户ID所属的帐户,并获取该帐户的所有设置. 我的问题是我在控制器或模型中存储这些值的位置

在Controller或Model中存储变量的最佳实践是什么?
例如,当脚本被执行时.它从会话中获取用户ID并获取它的用户类型,超级管理员,管理员,服务代表,销售代表.我们还检查用户ID所属的帐户,并获取该帐户的所有设置.

我的问题是我在控制器或模型中存储这些值的位置?

先感谢您.

解决方法:

在PHP中,考虑一个真正的MVC模型有点奇怪,因为你的模型,视图和控制器可以访问$_SESSION.

例如,如果要将用户登录,则模型将执行以下操作:

class Model{
    ...
    static function login($username, $password){
        $result = Model::getUser($username, $password);

        if(empty($result)){
            return false;
        }
        else
        {
            $_SESSION['userid'] = $result['id'];
            // Assign other information you think you'll need in the session here
        }
    }

    static function loggedIn(){
        if(isset($_SESSION['userid']){
            return true;
        }
        else
        {
            return false;
        }
    }

    static function getAttribute($attr){
        return $_SESSION[$attr];
    }
    ...
}

class Controller{
    function someFxn(){
        $userInfo = Model::getAttribute('someAttr');
    }
}

显然这个代码必须花费,但它应该正确显示概念.我还在模型中使用了静态函数,但您可以将模型作为对象.

My questions is where do i store these settings, in the Model, or pass it back to the controller, and the controller will store these settings?

根据您的操作方式,您可以通过模型每次从数据库中获取设置,也可以将它们存储在会话中.在$_SESSION中存储内容将允许您减少数据库调用.实际上,模型操纵$_SESSION或数据库.如果您的模型特定于某些东西(您可以创建自己的用户模型),那么您实例化该对象并将您的信息存储在私有成员中.

控制器的要点是从模型中获取信息,然后相应地渲染页面.真的是MVC数据流以这种方式工作:

>请求控制器
>控制器获取信息表单模型(这是可选的,也许控制器不需要模型中的任何内容)
>模型将信息返回给控制器
(如果您在上一步中提出请求,则会发生这种情况)
> Controller传递适当的信息进行查看.

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读