Mettre un objet dans une variable de session

Messages postés
68
Date d'inscription
vendredi 21 janvier 2005
Dernière intervention
5 octobre 2009
- - 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

2 réponses

Messages postés
182
Date d'inscription
jeudi 20 mai 2004
Dernière intervention
22 octobre 2010
0
Merci
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
Messages postés
158
Date d'inscription
samedi 8 février 2003
Dernière intervention
17 juin 2010
0
Merci
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.