25.5. 原理
上一页 | 第 25 章 Zend_Session | 下一页

## 25.5. 原理

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实例对象），有利于限制作用域，且有效地导入了一个特定的会话命名空间到本地作用域中。

上一页 | 上一级 | 下一页
25.4. 全局会话管 | 起始页 | 第 26 章 Zend_Uri