为登录系统创建数组外对象php codeigniter
我有一个简单的问题,我正在创建一个简单的登录系统,我想在成功登录后将用户信息分配到模型类中 示例模型为登录系统创建数组外对象php codeigniter,php,codeigniter,getter-setter,magic-methods,Php,Codeigniter,Getter Setter,Magic Methods,我有一个简单的问题,我正在创建一个简单的登录系统,我想在成功登录后将用户信息分配到模型类中 示例模型 class user extends CI_Model { public $id=FALSE,$name,$role; public function __construct(){ parent::__construct(); //load user information if($this->session->userda
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(){......}
但是我觉得这不太合适!!它又丑又不干
那么我应该使用魔法集吗?或者我可以做一些类似于$this=$this->session->userdata('user')代码>
对我来说,目标是因为这个模型在我的自动加载上,我希望能够使用simple$id=$user->id
或
if($user->id)回显“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()”
我想那是因为你在这个->会话中获得了$capture!那我怎么才能解决这个问题 为什么不干脆
if($this->session->userdata('user')){
$this->data = $this->session->userdata('user');
}
。。。然后,您可以访问$user->data->id
。此外,如果您在用户数据中添加更多属性,这种方法在将来会更加灵活。我的老板不喜欢:(…他想要$user->id!我想我可以按照您的建议使用,并编写一个u get从数据中获取它:D!foreach($u as$k=>$v)$this->$k=$v;类似的东西可能有用吗?