繁体   English   中英

有没有一种方法可以通过会话传递对象并使用其功能?

[英]Is there a way to pass an object through sessions and use its functions?

我的理解是,当您序列化一个对象并将其通过会话传递时,例如,从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();

某种程度上,要获取已加载到SESSION中的对象,您需要在调用unserialize之前在某处包含类定义,该类定义将按预期运行,但是从技术上讲,它仍将创建一个新实例。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM