在PHP中,将整个对象存储为会话变量是最佳实践吗?
根据我的经验,有时它有效,有时则无效。它有什么具体原因吗?
示例:
session_start();
$object = new sample_object();
$_SESSION['sample'] = $object;
答案 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,它存储和检索会话中的数据,用于该特定类(或具有相同接口的类组)的实例。