0

我有一个简单的问题,我正在创建一个简单的登录系统,我想在成功登录后将用户信息分配给模型类,

示例模型

class user extends CI_Model {
    public $id=FALSE,$name,$role;

    public function __construct(){
        parent::__construct();

    //load user information
        if($this->session->userdata('user')){
            $u=$this->session->userdata('user');
            $this->id=$u->id;
            $this->role=$u->role;
            $this->name=$u->name;
        }

    }
    function login(){......}

但这对我来说看起来不正确!它丑陋而不干燥..

那么我应该使用魔法_set _get 吗?或者我可以做类似的事情吗$this=$this->session->userdata('user');

对我来说,目标是因为这个模型在我的自动加载上,我希望能够使用简单的$id=$user->id或 从任何其他模型/控制器获取用户信息if($user->id)echo"hello".$user->name;

现在如果我这样做。

    private $data;

    public function __construct(){
        parent::__construct();
        $this->data = (object) $this->session->userdata('user');
    }
    public function __get($name) {
    if(isset($this->data->$name)){
        return $this->data->$name;
        }
    }

这将创建一个错误“调用非对象上的成员函数 userdata()”

我认为那是因为 __get 捕获 $this->session !那么我该如何解决这个问题?!

4

1 回答 1

1

为什么不简单...

if($this->session->userdata('user')){
    $this->data = $this->session->userdata('user');
}

...然后稍后您可以访问$user->data->id. 此外,如果您向用户数据添加更多属性,这种方法将来会更加灵活。

于 2013-04-10T02:49:35.317 回答