有没有办法通过会话传递对象并使用其功能?

时间:2011-08-25 05:42:28

标签: php session object parameter-passing

我的理解是,当您序列化一个对象并将其传递给一个会话时,例如,从index.php页面传递给securePage.php,SESSION只传递该对象的数据,因此,您不能使用该对象的函数。唯一的方法是使用您传递的数据在securePage.php上创建一个新对象....有没有办法传递一个实际的对象,然后使用它的函数而不在securePage.php上创建一个全新的对象。

示例:

$randomObj = new rndObject;
$_SESSION['object'] = serialize($randomObj);

和securePage.php

$whatever = unserialize($_SESSION['object']);

//below code won't work and say something like
//Fatal error: Call to a member function checkAccess() on a non-object in 
//securePage.php on line 39
echo $whatever->checkAccess();

2 个答案:

答案 0 :(得分:3)

排序,为了获取已加载到SESSION的对象,您需要在调用unserialize之前在某处包含类定义,它将按预期工作,但从技术上讲,它仍然会创建一个新实例。

答案 1 :(得分:0)

你应该使用__sleep()和__wakeup()魔术方法(这就是它的用途):

http://www.tuxradar.com/practicalphp/6/13/0

http://php.net/manual/en/language.oop5.magic.php