A quoi sert Serialize (vs $_SESSION) [PHP] - PHP - Programmation
Marsh Posté le 12-05-2010 à 12:08:13
Serialize sert à obtenir une représentation d'un objet sous forme de chaine de caractères.
Dans la pratique on ne stocke que des chaines de caractères en session (ce que tu mets en session est par défaut stocké dans un fichier texte, sur le serveur).
Si tu essaies de mettre directement un objet il sera sérialisé quand même (sauf erreur de ma part), et il faudra de toute manière le désérialiser pour l'utiliser dans un autre script.
Marsh Posté le 12-05-2010 à 12:59:15
Merci pour ta réponse, effectivement je ne savais pas que les objets stockés dans la variable $_SESSION étaient converties en chaines de caractères. Me voici éclairé sur le sujet.
Thanks.
Marsh Posté le 12-05-2010 à 13:04:41
Dans la doc ils disent que PHP fait ces appels automatiquement (c'est du moins ce que j'en comprends):
Citation : Lors de la linéarisation d'un objet, PHP tentera d'appeler la fonction membre __sleep avant de linéariser. Cela permet à l'objet de faire un dernier nettoyage, etc. avant d'être linéarisé. De même, lorsque l'objet est restauré en utilisant unserialize(), la fonction membre __wakeup est appelée. |
Marsh Posté le 12-05-2010 à 13:12:07
durk a écrit : Dans la doc ils disent que PHP fait ces appels automatiquement (c'est du moins ce que j'en comprends):
|
Ce qu'il veut dire c'est que tu peux utiliser ces fonctions pour faire des traitements supplémentaires.
Par exemple mettons que tu veux serializer un objet qui a ouvert un fichier/une connexion à une base de données/.... Tu peux fermer le fichier proprement dans __sleep, et le rouvrir dans __wakeup, pour rendre l'utilisation plus transparente.
Marsh Posté le 12-05-2010 à 11:57:42
Bonjour à tous,
J'ai une question de débutant. Je voudrais savoir si qqn peut m'expliquer pourquoi utiliser la fonction serialize pour passer des paramètres entre differents scripts; notamment pourquoi la préférer à directement stocker ces paramètres dans la variable $_SESSION.
Essayez de détailler svp (noob inside), ou carrément un exemple dans lequel cela devient indispensable de serializer.
Voila un bout du code trouvé sur le net qui me fait poser la question:
Pourquoi ne pas faire directement
Merci à tous.