在PHP会话中存储对象

时间:2017-07-03 14:17:04

标签: php oop serialization

在PHP中,将整个对象存储为会话变量是最佳实践吗?

根据我的经验,有时它有效,有时则无效。它有什么具体原因吗?

示例:

session_start();
$object = new sample_object();
$_SESSION['sample'] = $object;

2 个答案:

答案 0 :(得分:4)

在存储对象之前在PHP中使用serialize(),并在从会话中检索对象时调用unserialize()

商店对象

session_start();
$object = new sample_object();
$_SESSION['sample'] = serialize($object);

检索对象

session_start();
$object = unserialize($_SESSION['sample']);

答案 1 :(得分:1)

通常,最佳做法是不在会话中存储对象:D

我建议改为只存储数据。当您必须检查会话的当前状态时,它将具有使调试过程更容易的额外好处。

如果你想要真正的想象,你可以创建一个单独的data mapper,它存储和检索会话中的数据,用于该特定类(或具有相同接口的类组)的实例。