2017-07-03 108 views
-2

在PHP中,将完整对象存储为会话变量是否被认为是最佳实践?在PHP会话中存储对象

从我的经验看,有时候它有效,有时候不行。它有什么具体原因吗?

例子:

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

如果对象是可序列化的,它应该没有问题。 –

回答

3

使用serialize()在你的PHP对象之前存储和调用unserialize()当从会议检索您的对象。

存储对象

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

检索对象

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

''sample_object'类必须在'unserialize'之前加载。 – AbraCadaver

+0

是的,''''必须在'unserialize()'''object'之前加载 –

1

在一般情况下,最好的做法是不要存储在会话对象都:d

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

如果你想真的很花哨,你可以制作一个单独的data mapper,它存储和检索会话中该特定类(或一组类,具有相同接口)实例的数据。