我目前正在使用会话变量来存储用户信息,但我想更改它以便于编码变量,如$ user-> username
变量即时使用:
$_SESSION['username']
$_SESSION['email']
$_SESSION['firstname']
$_SESSION['lastname']
$_SESSION['ip']
$_SESSION['level']
$_SESSION['subscriber']
我想要使用的变量:
$user->username
$user->email
$user->firstname
$user->lastname
$user->ip
$user->level
$user->subscriber
答案 0 :(得分:7)
只需将数组转换为对象:
$user = (object) $_SESSION;
数组转换为具有按键和相应值命名的属性的对象。对于任何其他值,名为标量的成员变量将包含值。
答案 1 :(得分:0)
这可能不是处理此问题的最佳方法,但它很容易解决数组问题。
注意:你真的应该避免使用superglobals和ESPECIALLY Session来存储任何类型的用户数据。这些信息很容易从计算机上获取,并可能危及您的网站和用户。
类记录{ $数据;
public function __construct(array $data) {
$this->data = $data;
}
public function __get($name) {
return $this->data[$name];
}
public function __set($name, $value) {
$this->data[$name] = $value;
}
}
$ user = new Record($ _ SESSION); echo $ user-> username;
答案 2 :(得分:0)
我建议用mapper创建一个对象
class User {
public $username;
public $name;
public $firstName;
public $lastName;
public $ip;
public $level;
public $subscriber;
// add methods that would be useful on a user manipulating the above values;
public static function createUserFromArray($array){
$user = new User();
$user->username = $array["username"];
$user->name = $array["name"];
$user->firstName = $array["firstName"];
$user->lastName = $array["lastName"];
$user->ip = $array["ip"];
$user->level = $array["level"];
$user->subscriber = $array["subscriber"];
return $user;
}
}
然后,当您想要从存储的会话数据创建用户时,您只需使用:
$user = User::createUserFromArray($_SESSION);
这将允许您从任何适当的数组中获取用户,这可以是会话或数据库结果行,也可以是数组文字。