Version 1.0.0 - 2006/01/31

7.3 Sérialisation

Vous serez très souvent amené à garder l’état d’un objet. Tous les développeurs PHP savent combien de fois il n’est pas très agréable de converser proprement l’état de plusieurs objet au long d’une session. Le problème est que les pointeurs n’existent pas en PHP et les variables utilisateur sont toutes détruites après l’exécution du scripte principale. Le seul moyen traditionnel qu’il nous reste en PHP, est de sauvegarder les variables dans la session. Cette méthode, un peu primitive, n’est pas aussi simple à mettre en œuvre lorsqu’il s’agit des objets. Vous devez pour cela utiliser le processus de sérialisation qui peut vite devenir agaçant.
Le framework dispose d’un mécanisme très efficace pour vous facilité la tâche. En réalité vous pouvez toujours  mémoriser des valeurs dans la session en passant l’instance de session de votre environnement. La vraie révélation pour les contextes, une exclusivité de Noas PHP, est la capacité à pourvoir conserver leurs états au fil de la session. Selon vos besoins, vous pouvez activer ou désactiver la mémorisation de l’état d’un contexte. Bien que ce soit le processus natif de sérialisation qui est utilisé en interne, la sauvegarde de l’état du contexte et de ses sous-objets est quasiment transparente pour le développeur.
Cette technique ouvre plusieurs portes aux développeurs. Penser aux champs d’un formulaire qui seront automatiquement rétablies en cas d’erreur de validation, ou encore le résultat d’une recherche conservée tant que l’utilisateur n’en effectue pas d’autre.
Au cours de son cycle de vie, le contexte subi plusieurs phase de sérialisation/désérialisation. Les méthodes correspondantes vous permettent de suivre et mettre à jour les propriétés.

Vous devez absolument éviter les phénomènes de « désynchronisation» et de « copies fantômes». La désynchronisation se produit lorsque des variables, représentant une entité unique, est sauvegardée dans plusieurs contextes de page. Pour régler ce problème, vous pouvez tenter de synchroniser les variables manuellement, si cela n’est pas trop complexe. Vous pouvez également restreindre l’entité à une seule variable. Les copies fantômes se produisent lorsqu’une variable est enregistrée plusieurs fois dans un contexte. Sachez que toute variable à sauvegarder ne doit avoir qu’un seul propriétaire. Si pour des raisons particulières, vous manipuler plusieurs références d’une variable, détruisez les toutes avant la phase de sérialisation.

 

© 2005 Réoka Djohou, tous droits réservés.