从Zend_Session_Namespace读取时包括所有类?

时间:2011-03-29 09:43:00

标签: zend-framework zend-session

我的会话中有两个名称空间:“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 - 我想做的就是获取我的“全局”命名空间。

现在的问题是: 我是否必须为所有我的命名空间中的所有对象包含所有类,或者是否可以只包含对象的类在我正在访问的命名空间中?

提前致谢

1 个答案:

答案 0 :(得分:2)

Zend_Session中的命名空间只是$ _SESSION全局变量之上的一个层。在php中,这些命名空间不存在。在Zend_Session中,命名空间是关联数组的键。

因此,当您加载会话命名空间时,实际上会加载整个$ _SESSION,除非您无法通过此Zend_Session访问其他“命名空间”。所以是的:您需要在会话之前包含文件currentUserModel.php。

另一种方法是正确使用类中的__sleep()和__wakeup()魔术方法,只将类的属性序列化为关联数组,然后你就可以了。