Zend_Session_Core提供了一个内部接口,用静态方法封装了所有对$_SESSION
单体的访问。通常,开发者在使用Zend_Session和Zend_Session_Namespace的时候,不应该直接去访问$_SESSION
。然而,只要Zend_Session_Namespace使用的命名空间的名字不与遗留代码使用的$_SESSION
中的键名重叠,遗留代码也可与Zend_Session共存。当前,还没有尝试去发现遗留代码(或者其他的PHP应用程序)无意识的分享和重叠会话状态数据的情形。因此,为避免复杂化,开发者应遵守在其他章节讲到的最佳实践要点。
所有使用Zend_Session中的静态方法来处理和操作全局会话管理,将影响到所有由Zend_Session_Namespace及相关组件管理的会话的行为。大多数开发者不需要直接使用Zend_Session。
不像$_SESSION
,Zend_Session_Namespace从逻辑上隔离了所有的会话数据到各自独立的命名空间下,把数据储存在PHP的数组中,然后再把这些数组存储到以命名空间名为键名的$_SESSION
中去。构造一个Zend_Session_Namespace的实例,返回指定命名空间的一个不唯一的"窗口"。虽然一个命名空间的名字只能对应一个命名空间,但多个“窗口”可能共用一个命名空间。这些对象实例只能用于操作当创建Zend_Session_Namespace实例时指定的命名空间下的会话状态。因此,Zend_Session
引入了一个局部变量(Zend_Session_Namespace实例对象),有利于限制作用域,且有效地导入了一个特定的会话命名空间到本地作用域中。