duanna3634 2013-04-10 02:21
浏览 52
已采纳

从数组php codeigniter创建一个对象用于登录系统

i have a simple question, i'm creating a simple login system, and i want to assign user info into model class after success login,

example model

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(){......}

but this just dont look right to me !! its ugly and not dry..

so should i use magic _set,_get ? or can i do something like $this=$this->session->userdata('user');

objective for me is since this model is on my Autoload, i want to be able to get user info from any other model/controller using simple $id=$user->id Or if($user->id)echo"hello".$user->name;

now if i do.

    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;
        }
    }

this will create an error "Call to a member function userdata() on a non-object"

i thinks thats because __get capture the $this->session ! so how can i fix this ?!

  • 写回答

1条回答 默认 最新

  • duanming7833 2013-04-10 02:49
    关注

    Why not simply...

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

    ... and then later on you can access $user->data->id. Also this approach will be more flexible in the future if you add more attributes to your user data.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥15 Python3.5 相关代码写作
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗