|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Membre régulier
![]() Inscription : juin 2007 Messages : 86 ![]() |
EDIT: Solution aux posts #4 (et #5)
Bonjour a tous. J'ai un objet "$user->panier", que je serialize pour rentrer dans une variable de session. Probleme, lorsque je "unserialize" l'object, il devient un object de la StdClass et ne me sert donc plus a rien. Pourtant, la définition de la classe PANIER (celle de l'objet) est faite AVANT le session_start(), etc.. Le petit soupson que j'ai: l'objet $user->panier est créé, comme vous pouvez le voir, DANS le constructeur de la classe USER. c'est dans cette même classe USER qu'elle est sérializée et unsérializée. Ca pourai venir de la ? Bon, bref, voici le code. La fameuse classe qui renit son objet (la méchante!): Code :
Code :
Code :
Donc si quelqu'un pouvait m'aider, ou m'indiquer un piste de recherche, quelque chose.. Merci par avance. Cordialement, Damien. |
||||||
|
|
00
|
|
|
#2 |
|
Membre émérite
![]() Inscription : août 2006 Messages : 943 ![]() |
PHP est un langage de script, et s'interprete de haut en bas, et de gaucha à droite.
Pourquoi ton session_start() est si bas ? Pourquoi ne le mets-tu pas au début ? Dans ta classe USER, tu utilises des variables de SESSION, sans qu'elles soient déclarer.... Conseil : session_start au début, essaye.... Je fais à peu près les même choses (même si je préfère sérializer et unserializer à l'extérieur des classes....), mais mes includes de classes je les faits juste après le session_start(). PS : petite question : pourquoi ne pas, d'ailleur, faire hériter USER de PANIER ? Enfin, c'est juste une question omme ca....
__________________
Veni Vidi Vici ------------------------- Mes articles : developpez.com ou bien vbview.net ------------------------- Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!! Et aussi : --> pear_manual_fr.chm!!! Ou encore : --> Les tutoriaux & cours PHP de Développez.com ------------------------- |
|
|
00
|
|
|
#3 | |||
|
Membre régulier
![]() Inscription : juin 2007 Messages : 86 ![]() |
Merci pour cette réponse rapide (et désolé la mienne pas rapide.. fête de la musique oblige )Citation:
Quoi qu'il en soit, qu'il soit avant ou après ne change rien. Citation:
Mais la aussi, quoi qu'il en soit, les session ormis ce probleme de StdClass marchent très bien comme ça. on peu se logger, rester logger, etc.. et quand on ajoute un truc au panier, le truc est bien ajouté au panier, le panier reste etc.. sauf que le panier ne marche pas car il n'a plus de méthodes :-/ M'enfin, pas de probleme du côté des sessions visiblement. Citation:
|
|||
|
|
00
|
|
|
#4 | |
|
En attente de confirmation mail
![]() Inscription : juin 2002 Messages : 6 164 ![]() |
Citation:
Je serais intéressé par un dump complet de vos variables de session. Est-ce possible d'en avoir un ? |
|
|
|
00
|
|
|
#5 | ||||
|
Membre régulier
![]() Inscription : juin 2007 Messages : 86 ![]() |
Code :
Code :
Edit: PS: j'ai la configuration par defaut de XAMPP Linux. |
||||
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Inscription : janvier 2005 Messages : 2 288 ![]() |
Je vais peut-etre dire une betise ou tout mélanger, mais il me semblait qu'il fallait coder les méthodes __sleep() et __wake() pour les classes que l'on souhaiter pouvoir (dé)sérialiser dans les sessions, non?
|
|
|
00
|
|
|
#7 | |
|
Membre régulier
![]() Inscription : juin 2007 Messages : 86 ![]() |
Citation:
|
|
|
|
00
|
|
|
#8 | |
|
En attente de confirmation mail
![]() Inscription : juin 2002 Messages : 6 164 ![]() |
Citation:
D'autre part, votre méthode __sleep est erronée puisque PHP attend qu'on lui retourne un tableau : vous devriez avoir une erreur (de type notice). Quelle version de PHP utilisez-vous ? |
|
|
|
00
|
|
|
#9 | |||||
|
Membre régulier
![]() Inscription : juin 2007 Messages : 86 ![]() |
Youpi !
J'ai donc viré les fonctions serialize et unserialize et maintenant j'ai encore plein de nouveaux problemes, mais mon objet reste "lui-même" Code :
julp: j'utilise PHP 5.2.1, et comme précisé plus haut, avec les parametres de la distribution php/sql XAMPP. ..et je n'ai aucune notice. De plus, si je regarde la documentation a ce propos , je peu voir: Citation:
|
|||||
|
|
00
|
|
|
#10 | |
|
En attente de confirmation mail
![]() Inscription : juin 2002 Messages : 6 164 ![]() |
L'explication à l'obtention de stdClass serait la suivante d'après la doc :
Citation:
|
|
|
|
00
|
|
|
#11 |
|
Membre émérite
![]() Inscription : août 2006 Messages : 943 ![]() |
C'est bizarre, j'ai jamais eu ces problèmes alors que je sérialise et désérialise manuellement, et ce en ayant mes déclarations de classes APRES le Session_Start().....
Ba, tant mieux pour moi Au fait, une petite question : j'ai lu quelque part que l'auto_load des classes allait être déprécié, est-ce vrai ? Si oui, pourquoi ? (C'est bien pratique quand même...)
__________________
Veni Vidi Vici ------------------------- Mes articles : developpez.com ou bien vbview.net ------------------------- Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!! Et aussi : --> pear_manual_fr.chm!!! Ou encore : --> Les tutoriaux & cours PHP de Développez.com ------------------------- |
|
|
00
|
|
|
#12 | |
|
Membre régulier
![]() Inscription : juin 2007 Messages : 86 ![]() |
Citation:
|
|
|
|
00
|
|
|
#13 |
|
Membre émérite
![]() Inscription : août 2006 Messages : 943 ![]() |
Oui, c'est pour cela que je sérialise (Je ne met pas mes objets en BDD) : je les passes d'une page à l'autre comme ca...
__________________
Veni Vidi Vici ------------------------- Mes articles : developpez.com ou bien vbview.net ------------------------- Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!! Et aussi : --> pear_manual_fr.chm!!! Ou encore : --> Les tutoriaux & cours PHP de Développez.com ------------------------- |
|
|
00
|
|
|
#14 | |||
|
Membre régulier
![]() Inscription : juin 2007 Messages : 86 ![]() |
Citation:
Citation:
En fait, PHP n'attend pas spécialement qu'on lui retourne un tableaux. Il n'attend un tableaux que dans le cas ou __sleep() sert a retourner l'objet (son utilisation logique et courant en bref), mais rien n'empeche de retourner autre chose a PHP, auquel cas, le "autre chose" sera mis dans la variable de session. C'est pour cela que je n'ai eu aucun Warning ou Notice. Cela veut aussi dire que vous aviez raison, mon __sleep() est érroné, ou du moins au vu de l'utilisation que j'en fait. Merci encore pour votre aide précieuse. Citation:
|
|||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com