在$ _SESSION中传递2个PHP脚本之间的对象

时间:2012-02-21 12:20:33

标签: php session object

  

可能重复:
  PHP: Storing 'objects' inside the $_SESSION

我有两个名为' search.php'的脚本文件。和' 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中将信息从一个脚本传递到另一个脚本?

3 个答案:

答案 0 :(得分:0)

如果要使用会话传递变量,则需要将该变量添加到search.php中的会话中,如下所示:

$itemlist = new Search($text);
$_SESSION['search']         = $itemlist;

然后在share.php中返回变量,如下所示:

$itemlist = $_SESSION['search'];
echo $itemlist;

如果您遇到问题,我会检查“新搜索($ text);”在第一页上,并确保它是您实际想要存储的内容。

答案 1 :(得分:0)

PHP自动序列化会话中的对象。

您不能在该对象中拥有任何资源(即数据库连接等)。如果你需要它们,你需要将__sleep和__wake方法添加到你希望存储在会话中的对象。 __sleep将obj呈现为值obj(实际上是一个数组,因为必须返回一个数组),__ wake方法应该根据该数组重建obj。

阅读this

答案 2 :(得分:0)

也许你只是错过了包含Search类的php文件的包含。

require_once('Search.php');

如果您从会话中反序列化对象时不知道该类,那么PHP会创建一个“虚拟”对象,仅包含属性,但不知道它的方法。如果包含该类,则PHP可以将其反序列化为此类的真实对象。