[PHP] A quoi sert Serialize (vs $_SESSION)

A quoi sert Serialize (vs $_SESSION) [PHP] - PHP - Programmation

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:
 

Code :
  1. $_SESSION['parametre']=serialize($parametre);


 
Pourquoi ne pas faire directement
 

Code :
  1. $_SESSION['parametre']=$parametre;


 
Merci à tous.
 :jap:

Reply

Marsh Posté le 12-05-2010 à 11:57:42   

Reply

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.


Message édité par skeye le 12-05-2010 à 12:08:23

---------------
Can't buy what I want because it's free -
Reply

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.
 :jap:

Reply

Marsh Posté le 12-05-2010 à 13:02:08    

il me semble qu'il y a aussi des méthodes "magiques" si on veut controler la sérialisation

 

edit: __sleep et __wakeup


Message édité par art_dupond le 12-05-2010 à 13:02:53

---------------
oui oui
Reply

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.

Message cité 1 fois
Message édité par durk le 12-05-2010 à 13:05:12
Reply

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):
 

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.



 
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.


---------------
Can't buy what I want because it's free -
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed