我有点困惑,我从去年开始以面向对象的方式学习php 5。第一个项目是使用Zend框架完成的。

但是我的一些朋友正在谈论在$ _SESSION超全局数组中存储对象。但是我无法找到一个很好的例子,为什么或何时这样做呢?

如果有人可以给我提示,为什么要在会话中存储对象,那就太好了。

最佳答案

会话本质上是一个变量,您可以在其中存储任何内容,包括数字,字符,字符(String),结构.....对象。

它也是在页面中保持不变的变量。它最常用于保存用户记录的信息

我如何使用会话对象如下:

可以说我在数据库中有一个用户表,我需要显示我所有页面的名字和姓氏。

我能做的两件事...旧方法:

$result = mysql_fetch_array(mysql_query("SELECT * FROM users WHERE userId=1"));
$_SESSION['userId'] = $result['userId'];
$_SESSION['firstname'] = $result['firstname'];
$_SESSION['lastname'] = $result['lastname'];


现在您可以执行此操作,但是如果让我们说以下代码会更好:

class user{
    _construct($userId){

       $qry_str = mysql_query("SELECT * FROM users WHERE Id=$userId");

       $result = mysql_fetch_array($qry_str);
       $this->userId = $userId;
       $this->firstname = $result['firstname'];
       $this->lastname = $result['lastname'];
    }

    public $userId, $firstname, $lastname;
}


并初始化

$_SESSION['user'] = new user(1);


或者说多个用户:

$_SESSION['user'][1] = new user(1);
$_SESSION['user'][2] = new user(2);
$_SESSION['user'][3] = new user(3);


然后,在代码中,您所需要做的就是:在登录时通过userId分配用户,然后使用存储的类来显示所有信息。

使用类可以做很多更强大的事情。但是上面显示了一个简单有效的解决方案。

尝试以下操作:如果在用户类的构造中添加语句和死亡语句,则在构造用户时可以进行错误检查

希望这可以帮助

10-08 05:19
查看更多