Objet et Session

Eléphanteau du PHP | 38 Messages

02 févr. 2006, 09:39

Bonjour,

j'ai un petit soucis.
J'essaie dans une première page de mettre dans ma session un objet,
j'affiche le contenu de la variable $_SESSION.
Array ( [SESSION] => Array ( [langue] => fr [devise] => 2 [user] => 1 [client] => 1 ) [cart] => Cart Object ( [items] => Array ( ) [total] => 0 [totalttc] => 0 ) [dtp] => 1 [oDevis] => Devis Object ( ) )
Sur la seconde page, j'affiche le contenu de la variable $_SESSION, et j'obtiens :
Array ( [SESSION] => Array ( [langue] => fr [devise] => 2 [user] => 1 [client] => 1 ) [cart] => Cart Object ( [items] => Array ( ) [total] => 0 [totalttc] => 0 ) [dtp] => 1 [oDevis] => __PHP_Incomplete_Class Object ( [__PHP_Incomplete_Class_Name] => Devis ) )
La classe est définie avant le session_start().
La classe est entièrement vide. Pas de membres ni de fonctions membres.

Quelqu'un sait il pourquoi je n'arrive pas à mettre la classe dans la session ?
Merci d'avance.

Mammouth du PHP | 19672 Messages

02 févr. 2006, 10:43

La classe est entièrement vide. Pas de membres ni de fonctions membres.

Quelqu'un sait il pourquoi je n'arrive pas à mettre la classe dans la session ?
C'est un peu comme si tu disais : "ma bouteille est vide, quelqu'un sait-il pourquoi je n'arrive pas à remplir mon verre ?"
Pourrais-tu reformuler de façon logique ta question ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 38 Messages

02 févr. 2006, 12:33

Ma question n'est pas illogique, mais je me suis effectivement mal exprimé.

Ma classe est vide car elle se résume à cela :
class Devis{

}
On peut créer un objet d'une telle classe et le mettre dans une session.
$oDevis = new Devis();
$_SESSION["oDevis"] = $oDevis; // ou session_register("oDevis");
En faisant un dump de $_SESSION, juste après l'enregistrement de ma classe dans la session j'obtiens.
[oDevis] => Devis Object ( )
L'objet est donc bien dans la session.
Mais sur la page suivante le dump de $_SESSION me donne
[oDevis] => __PHP_Incomplete_Class Object ( [__PHP_Incomplete_Class_Name] => Devis )

Mammouth du PHP | 983 Messages

02 févr. 2006, 12:58

Il faut que la définition de la classe soit incluse avant le session_start().

session_start() tente de délinéariser ton objet mais vu qu'il ne connaît pas la structure de ta classe, il lui donne ce joli nom __PHP_Incomplete_Class Object.

Il suffit de faire un require_once du fichier contenant la définition de ta classe avant de faire session_start().

Eléphanteau du PHP | 38 Messages

02 févr. 2006, 15:05

Il faut que la définition de la classe soit incluse avant le session_start().

session_start() tente de délinéariser ton objet mais vu qu'il ne connaît pas la structure de ta classe, il lui donne ce joli nom __PHP_Incomplete_Class Object.

Il suffit de faire un require_once du fichier contenant la définition de ta classe avant de faire session_start().
je sais bien et c'est ça qui m'embête...
c'est que j'ai déjà l'include_once avant le session_start()...

Mammouth du PHP | 983 Messages

02 févr. 2006, 15:23

Vérifies que session.auto_start soir à Off dans la configuration du serveur HTTP.

Eléphanteau du PHP | 38 Messages

02 févr. 2006, 15:54

Actuellement dans mon php.ini il y a :

; Initialize session on request startup.
session.auto_start = 0

Mammouth du PHP | 983 Messages

02 févr. 2006, 18:08

Fais voir un exemple tel quel de la page où ca se passe.

Eléphanteau du PHP | 38 Messages

02 févr. 2006, 19:01

ça y est j'ai trouvé....
Il restait un session_start() dans un include loin loin loin dans un des scripts de configuration... le problème vient donc de là...