可能重复:
PHP:存储';对象';在$_SESSION 内
我有两个名为"search.php"answers"share.php"的脚本文件,我想将信息从第一个发送到第二个。我创建了一个名为$_SESSION['search']的var,它是search类的一个对象,但我无法读取第二个脚本文件中的对象。
search.php
session_start();
$_SESSION['search'] = new Search($text);
(...)
share.php
session_start();
$itemList = $_SESSION['search']->getItemList(); // Error
为什么?如何用PHP将信息从一个脚本传递到另一个脚本?
如果要使用会话传递变量,则需要将变量添加到search.php中的会话中,如下所示:
$itemlist = new Search($text);
$_SESSION['search'] = $itemlist;
然后将变量放回share.php中,如下所示:
$itemlist = $_SESSION['search'];
echo $itemlist;
如果你有问题,我会在第一页检查"new Search($text);",并确保它是你真正想要存储的内容。
PHP自动序列化会话中的对象。
该对象中不能有任何成员是资源(即数据库连接等)。如果你需要它们,你需要将__sleep和__wake方法添加到你希望存储在会话中的对象中__sleep将obj呈现为值obj(实际上是一个数组,因为您必须返回一个数组),__wake方法应该基于该数组重建obj。
读取此
也许您只缺少包含Search
类的php文件的include。
require_once('Search.php');
如果在从会话中反序列化对象时还不知道该类,那么PHP会生成一个"伪"对象,只包含属性,但不知道它的方法。如果包含该类,那么PHP可以将其反序列化为该类的真实对象。