adakick
Messages postés68Date d'inscriptionvendredi 21 janvier 2005StatutMembreDernière intervention 5 octobre 2009
-
27 nov. 2006 à 20:48
philippegui2 -
7 mars 2018 à 10:50
Bonjour, je voudrais enregistrer un objet dans une variable de session :
$panier = new Panier();
if(!isset($_SESSION['panier']))
$_SESSION['panier'] = $panier;
echo $_SESSION['panier'] ->getId();
Et cela ne fonctionne pas, je voulais savoir si on pouvait passer des objet dans les variable de session, ou si il fallait faire autrement.
huberdine
Messages postés158Date d'inscriptionsamedi 8 février 2003StatutMembreDernière intervention17 juin 2010 27 nov. 2006 à 23:05
Non, il n'est pas possible de passer un objet dans une variable de session.
Seul les variables de type simple (chainede caractère, entier, caractère, booléen) sont accepté.
L'astuce pour stocker un tableau ou un objet dans une variable de session est celle que t'as donné Renus02 :
Tu sérialise ton objet avant de le mettre en variable de session.
Et quand tu voudras l'utiliser, tu n'aura plus qu'à le désérialiser.
Un objet a une structure mémoire complexe avec des pointeurs dans tous les sens, ce qui ne lui permet pas d'être passer en variable de session.
Sérialiser un objet revient à concaténer les différentes propriétés de celui-ci pour qu'un seul pointeur ne soit utilisé pour le manipuler.
Désérialiser l'objet revient à reconstruire sa structure mémoire pour l'utiliser comme l'objet qu'il est.
Merci beaucoup, j'ai galérer plusieurs jours sur ce problème, avant de comprendre qu'un objet ne pouvais enter tout cru dans une variable de session, mais je veux bien ajouter qu'on peut stocker un Array() dans une variable de session sans sérialiser.