30.5. Théorie

Zend_Session fournit une interface interne pour encapsuler l'accès complet au singleton $_SESSION en utilisant des méthodes statiques. Généralement les développeurs ne devraient pas directement accéder à $_SESSION, quand il utilise Zend_Session et Zend_Session_Namespace. Cependant, il est possible que du code ancien coexiste avec Zend_Session, si les espaces de noms employés par Zend_Session_Namespace ne recouvrent pas les clés de $_SESSION employé par l'ancien code. Actuellement, aucune tentative n'est faite pour détecter des situations conflictuelles où un code ancien (ou une autre application PHP) modifierait involontairement ou chevaucherait les données de session. Les développeurs sont donc invités à suivre les meilleures pratiques décrites dans les autres sections pour éviter des complications.

Toute la gestion et la manipulation des données de session est réalisée en utilisant les méthodes statiques définies dans Zend_Session qui affectent le comportement global des sessions contrôlées par Zend_Session_Namespace et les composants liés. La plupart des développeurs n'auront pas besoin d'employer Zend_Session directement.

Contrairement à $_SESSION, Zend_Session_Namespace isole de manière logique toutes les données de session dans les espaces de noms séparés, en stockant des données dans un tableau PHP et en stockant le tableau dans $_SESSION avec l'espace de noms comme clé. Construire une instance de Zend_Session_Namespace renvoie une "fenêtre" non-unique sur l'espace de noms choisi. Les "fenêtres" multiples sont possibles vers le même espace de noms, bien qu'il y ait seulement qu'un espace de noms possible pour une clé (le nom de l'espace de noms). Ces instances servent à limiter la manipulation des données d'état de session aux espaces de noms spécifiques, comme explicitement spécifié en créant l'instance de Zend_Session_Namespace. Les instances de Zend_Session aident donc à limiter la portée en introduisant une variable de portée locale (instance de l'objet Zend_Session_Namespace) qui importe un espace de noms spécifique dans la portée locale.