我的理解是,当您序列化一个对象并将其传递给一个会话时,例如,从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();
答案 0 :(得分:3)
排序,为了获取已加载到SESSION的对象,您需要在调用unserialize之前在某处包含类定义,它将按预期工作,但从技术上讲,它仍然会创建一个新实例。
答案 1 :(得分:0)
你应该使用__sleep()和__wakeup()魔术方法(这就是它的用途):