IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Sérialiser et Désérialiser un objet dans une variable de session


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 19
    Par défaut Sérialiser et Désérialiser un objet dans une variable de session
    J'ai un souci avec la fonction serialize()

    Je développe un script (categorie.php) qui s'appel lui meme de manière récursif,ce script utilise une class "catalogue" et donc instancie un objet "catalogue" pour son execution.

    J'aimerai pouvoir instancier la class "catalogue" à la premiere exécution du script et serializer-deserializer l'objet au cours des executions suivantes.

    Comment doit-je faire?

    Ci-dessous une partie du script (categorie.php).(le reste de change rien à mon problème)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    include_once('catalogue.class.php');
     
    	session_start();
    if(!isset($_SESSION['catalogue']))
    	{
    		echo "<br>Premiere affichage de categorie.php<br>";
     
    		$catalogue = new catalogue('catalogue');
    	}
    	else
    	{
    		$catalogue = unserialize($_SESSION['catalogue']);
     
     
    	}
                 .......................................................................................
                 $url = "categorie.php?id=" . $child->idcat;
    	echo "<a href=\"$url\">$child->nom_cat</a>" . '<br>';
                 ......................................................................................
     
     
             $_SESSION['catalogue'] = serialize($catalogue);

  2. #2
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    Théoriquement, il n'y a pas besoin de sérialiser/dé-sérialiser les variables des sessions, Php le fait.

    Cependant, pour qu'une variable de session et un objet n'en fasse qu'1, personnellement je fais comme ceci : (en me basant sur ton exemple)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class catalogue {
    	public $contenu;
     
    	public function __construct() {
    		if (!isset($_SESSION['catalogue'])) {
    			$_SESSION['catalogue'] = array('contenu' => 'machin_truc');
    		}
    		$this->contenu =& $_SESSION['catalogue']['contenu'];
    	}
    }
    Dans la page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    session_start();
     
    $catalogue = new catalogue();
    $catalogue->contenu = 'machin';
    Le &= défini que le contenu de la variable de session (catalogue/contenu) soit une référence de 'contenu' de la classe catalogue (ou inversement).

Discussions similaires

  1. Stocker un objet dans une variable
    Par Arkoze dans le forum Langage
    Réponses: 3
    Dernier message: 17/02/2011, 17h24
  2. [PHP 5.2] Mettre un objet dans une variable de session ?
    Par kolbek dans le forum Langage
    Réponses: 4
    Dernier message: 10/12/2009, 09h48
  3. utilisation d'un objet dans une variable session
    Par hammag dans le forum Langage
    Réponses: 1
    Dernier message: 28/04/2009, 14h59
  4. Mettre un objet dans une variable de session
    Par dondano dans le forum Langage
    Réponses: 4
    Dernier message: 27/11/2006, 22h07
  5. Réponses: 19
    Dernier message: 02/02/2006, 23h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo