Mettre un objet dans une variable de session

adakick 68 Messages postés vendredi 21 janvier 2005Date d'inscription 5 octobre 2009 Dernière intervention - 27 nov. 2006 à 20:48 - Dernière réponse :  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.

Merci.
Afficher la suite 

Votre réponse

3 réponses

Renus02 182 Messages postés jeudi 20 mai 2004Date d'inscription 22 octobre 2010 Dernière intervention - 27 nov. 2006 à 21:57
0
Utile
slt,

tu devrais serialiser ton objet avans de le stocker :

$panier = new Panier();
if(!isset($_SESSION['panier']))
    $_SESSION['panier'] = serialize($panier);

$temp = unserialize($_SESSION['panier']);
echo $remp->getId();

voila ;)
Commenter la réponse de Renus02
huberdine 158 Messages postés samedi 8 février 2003Date d'inscription 17 juin 2010 Dernière intervention - 27 nov. 2006 à 23:05
0
Utile
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.
Commenter la réponse de huberdine

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.