您好我有一个页面,我在其中设置了User类的对象。
$id = $_SESSION['user_id'];
$current_user = new User();
$current_user->getFromID($id);
我尝试过从其他页面访问此对象,但它显示为空白。有没有什么特别的方法可以做到这一点?
答案 0 :(得分:4)
您还需要将对象保存到会话中。
$_SESSION['user_id'] = $current_user;
不要忘记在使用会话的所有页面上包含User类定义(它可能在它自己的文件中,对吗?),否则User对象可能已损坏。
答案 1 :(得分:2)
将对象本身存储在会话中。为此,您的对象应实现__sleep() / __wakeup()函数。
实际上在这种情况下,您可能只需要__wakeup()
。我会做那样的事情:
用户类定义:
<?php //included file
class User {
private $user_id;
function getFromID($id) {... doing something; }
function __wakeup() {
$this->getFromID($this->user_id);
}
}
然后使用它并在会话中检索/存储;
<?php //some page
$current_user = $_SESSION['user'];
if(!$current_user) $current_user = new User();
...
$_SESSION['user'] = $current_user;
答案 2 :(得分:0)
如果您的对象有某种状态,您可以将其保存在会话中 这是在PHP中脚本之间传递变量的方法。
但如果没有 - 只需再次初始化。