我有一个简单的问题,我正在创建一个简单的登录系统,我想在成功登录后将用户信息分配到模型类中,
示例模型
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(){......}
但这对我来说不合适!它的丑陋和不干燥。
我应该使用magic _ set, _get?或者我可以做$this=$this->session->userdata('user');
我的目标是因为这个模型在我的Autoload上,我希望能够使用简单的$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->会话!那么我怎么能解决这个问题呢?!
答案 0 :(得分:1)
为什么不简单......
if($this->session->userdata('user')){
$this->data = $this->session->userdata('user');
}
...然后您可以访问$user->data->id
。如果您为用户数据添加更多属性,此方法将来也会更加灵活。