在整个应用中使用对象

时间:2010-06-04 13:20:52

标签: php oop object

您好我有一个页面,我在其中设置了User类的对象。

$id = $_SESSION['user_id'];
$current_user =  new User();
$current_user->getFromID($id);

我尝试过从其他页面访问此对象,但它显示为空白。有没有什么特别的方法可以做到这一点?

3 个答案:

答案 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中脚本之间传递变量的方法。

但如果没有 - 只需再次初始化。