会话过期时对象是否被销毁?
Does object get destroyed when session expires?
在我的 PHP 应用程序中,我定义了一个 User_class (具有一些属性和一些方法,包括 __construct()
和 __destruct()
)。我从这个 class 实例化了一个对象,为了使用它的凭据,我使用序列化方法将这个对象存储在 $_SESSION
超级全局中。 _destruct()
方法运行一些私有方法,包括 log_out 。
我的问题是,会话过期是否会破坏对象?
明确的回答:不,不是。
该对象作为字符串存储在会话中,代表所有属性的当前值,但不代表(!)任何方法、构造函数或析构函数。
当会话过期并且垃圾收集处于活动状态时,会话存储中剩余的会话将被删除。
为了在会话过期后显式注销用户,您需要注册自己的会话处理程序。
顺便说一句:为了在 $_SESSION
var 中存储一个对象,没有必要明确地序列化它。只需 $_SESSION['obj'] = $myObj;
就足够了 - 并且可以极大地加快速度。
在我的 PHP 应用程序中,我定义了一个 User_class (具有一些属性和一些方法,包括 __construct()
和 __destruct()
)。我从这个 class 实例化了一个对象,为了使用它的凭据,我使用序列化方法将这个对象存储在 $_SESSION
超级全局中。 _destruct()
方法运行一些私有方法,包括 log_out 。
我的问题是,会话过期是否会破坏对象?
明确的回答:不,不是。
该对象作为字符串存储在会话中,代表所有属性的当前值,但不代表(!)任何方法、构造函数或析构函数。
当会话过期并且垃圾收集处于活动状态时,会话存储中剩余的会话将被删除。
为了在会话过期后显式注销用户,您需要注册自己的会话处理程序。
顺便说一句:为了在 $_SESSION
var 中存储一个对象,没有必要明确地序列化它。只需 $_SESSION['obj'] = $myObj;
就足够了 - 并且可以极大地加快速度。