我有点困惑,我从去年开始以面向对象的方式学习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分配用户,然后使用存储的类来显示所有信息。
使用类可以做很多更强大的事情。但是上面显示了一个简单有效的解决方案。
尝试以下操作:如果在用户类的构造中添加语句和死亡语句,则在构造用户时可以进行错误检查
希望这可以帮助