serialization

Eléphant du PHP | 110 Messages

15 mai 2007, 14:31

salut, pourriez vous me dire a quoi sert la serialization? (et son contraire)

J'ai lu que ca servait a lineariser des variables pour les passer d'un script a un autre mais ca me parle pas trop comme explication.

on ne pourrait pas par exemple passer une session en parametres a un script sans serializer c'est ca?


merci!

Eléphant du PHP | 445 Messages

15 mai 2007, 15:00

Peut-être un début de piste sur wikipedia :

http://fr.wikipedia.org/wiki/S%C3%A9rialisation
LLDC
Ulti

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

15 mai 2007, 15:07

Pour te donner quelques exemples simples, on ne peut par exemple pas passer un objet (avec ses attributs et ses méthodes) en session. En revanche on peut y mettre des chaines ou des tableaux. On va donc sérialiser notre objet pour le transformer en chaine, et ainsi pouvoir le coller dans la session. Il ne restera plus qu'à le dé-sérialiser pour retrouver toute la structure de l'objet :)

Un autre exemple, pas forcément judicieux, mais potentiellement intéressant : si tu as un tableau complexe de valeur en php, plutôt que d'enregistrer les valeurs une par une dans ta base de données (en supposant que tu n'ais pas l'usage des valeurs unitairement), tu pourrais très bien sérialiser le tableau, stocker la chaine dans un varchar, et ainsi récupérer directement ton tableau structuré depuis ta base, sans avoir à te casser la tête pour le reconstruire :)

Bref, je dirais que le but, c'est de pouvoir conserver des structures entières, en dépit de passages par des formats qui ne les tolèrent pas nécessairement :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 110 Messages

15 mai 2007, 15:11

merci bien

par contre je rencontre un probleme avec les sessions

J'ai une session que je veux passer a un script, est ce que je dois la serializer ou la unserializer?

si je fait serialize il me rajoute des caracteres avant et apres la valeur de ma session, et si je fait unserialize il me met un message d'erreur :

Code : Tout sélectionner

Notice: unserialize(): Error at offset 0 of 5 bytes in c:\program files\easyphp1-8\www\sitenovabiotis\zone-entreprise\servlet\servlet.php on line 96
quelqu'un aurait une idée?

merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

15 mai 2007, 15:17

A priori, il faudrait la serialiser... mais j'avoue ne pas du tout voir l'intérêt de ce que tu veux faire.... il suffit juste d'un session_start() pour que ton script ait accès à la session, donc pourquoi vouloir la sérialiser et qu'est ce que tu essayes de sérilaiser concrêtement ?
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ViPHP
ViPHP | 5924 Messages

15 mai 2007, 15:18

1) Qu'appelles tu passer une session à un script ?
2) On ne unserialize qu'une chaine passée à la fonction serialize, donc on serialize avant, et on unserialize après..

Invité
Invité n'ayant pas de compte PHPfrance

15 mai 2007, 15:50

oui c'est vrai ma question peut paraitre bizarre, je suis alle un peu vite la. Le probleme c'est que je fais une application pour un stage et on m'a dit qu'il fallait obligatoirement serializer mes sessions pour les passer. Je vais demander plus de precision.
merci

Eléphant du PHP | 110 Messages

15 mai 2007, 16:22

c'est bien moi qui ai posté le message ci dessus :D