Problème de session avec objets [Résolu]

Signaler
Messages postés
43
Date d'inscription
mardi 24 mai 2005
Statut
Membre
Dernière intervention
2 novembre 2008
-
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
-
salut a tous


voila mon problème j'utilise des objets et les sessions mais voilà lorsque je fixe mon objet dans ma session je le récupére vide et je ne peut utiliser les méthodes qui l'implémente on ma dit d'utiliser les méthode __sleep et __wake mais cela ne fonctionne pas pour autant





page contenant les définition d'objets





4 réponses

Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
Il faut que tu charges ta classe avant d'utiliser :
$objet = unserialise($_SESSION['objet']);

Par contre, je viens de voir que tu fais des trucs mauvais.

On instancie JAMAIS une classe dans une superglobale !!!!!!
On utilise la superglobal $_SESSION pour stocker ta classe sérialisée !!

Donc ce que tu dois faire :

<?php
$objet = new objet;

$objet->method();
$objet->method();

$_SESSION['objet'] = serialize($objet); // Utilisera la méthode magique __sleep() si elle est existante.
?>
<?php

if ( isset($_SESSION['objet']) ) {
$objet = unserialize($_SESSION['objet']);
}

$objet->method();

//...
?>

Par contre, ca ne sert à rien de sérialiser une classe de DB... pour la simple et bonne raison que tu dois fermer OBLIGATOIREMENT la connection à la fin de ta classe pour la réouvrir lors de l'instanciation futur...

Regarde toutes les classes de DB présentes sur PHPCS et sur le net, et tu verras qu'aucune utilise la méthode que tu fais toi, car c'est techniquement impossible.

Voila !
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
De plus, une classe rien que pour les requetes, ca ne sert pas à grand chose.

Dans ce cas la, autant faire une classe de query, une classe de fetch, etc... :/ L'interêt est limité ici.

Nonon, ta classe de requete ne doit pas exister, elle doit etre implanté en tant que méthode de ta classe principale. Ce n'est pas comme ca que ca marche l'OO !
Messages postés
43
Date d'inscription
mardi 24 mai 2005
Statut
Membre
Dernière intervention
2 novembre 2008

oki merci de vos conseil je vais pencher la dessus et c'est pas que je veuille utiliser les objet pour ca on me demande de faire une apli avec objet pour les requete
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
Oui mais dans ce cas la, oriente le tout sous une seule classe.

Regarde les classes PHP5 déja présente, tu peux te servir d'une d'entre elle comme base pour une futur modification par exemple !