我的会话中有两个名称空间:“global”和“user”
在“global”中只有几个设置,在“user”中我有一个序列化的用户对象,我猜是正确保存的: (这是来自会话文件)
全球|一个:16:{ [...] S:12: “last_request”; I:1301390173; [...] }
用户|一个:1:{ S:10: “userObject”,O:16: “currentUserModel”:24:{ [...] S:10: “* _角色ID”; S:7: “优质”; [...] } }
当我这样做时:
$sess = new Zend_Session_Namespace('global');
我收到一个错误,包括我不想要的“currentUserModel.php”,因为我此时不需要userobject - 我想做的就是获取我的“全局”命名空间。
现在的问题是: 我是否必须为所有我的命名空间中的所有对象包含所有类,或者是否可以只包含对象的类在我正在访问的命名空间中?
提前致谢
答案 0 :(得分:2)
Zend_Session中的命名空间只是$ _SESSION全局变量之上的一个层。在php中,这些命名空间不存在。在Zend_Session中,命名空间是关联数组的键。
因此,当您加载会话命名空间时,实际上会加载整个$ _SESSION,除非您无法通过此Zend_Session访问其他“命名空间”。所以是的:您需要在会话之前包含文件currentUserModel.php。
另一种方法是正确使用类中的__sleep()和__wakeup()魔术方法,只将类的属性序列化为关联数组,然后你就可以了。