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 :

Sauvegarde d'un objet par une session


Sujet :

Langage PHP

  1. #1
    Membre à l'essai

    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 20
    Points : 18
    Points
    18
    Par défaut Sauvegarde d'un objet par une session
    Bonjour, je souhaiterais savoir si le code ci-dessous est correct, ou s'il y a une meilleure solution...

    Je compterais passer par les sessions pour sauvegarder l'objet sur une même page ou d'une page à l'autre (sans passer par fichiers ou bdd).

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    <?php
    	session_start();
    ?>
     
    <?php
    class Joueur{
    	private $po;
    	//nombre de pièces d'or…
     
    	public function charger(){
    		if(isset($_SESSION['po'])){
    			$this->po = $_SESSION['po'];
    		} else {
    			$this->po = 0;
    		}
    	}
     
    	public function sauvegarder(){
    		$_SESSION['po'] = $this->po;
    	}
     
    	public function ajouter_po($nb){
    		$this->po = $this->po + $nb;
    	}
     
    	function __construct(){
    		//caractéristiques par défaut
    	}
     
    	private function html($mes,$val){
    		echo $mes." ".$val."<br />";
    	}
     
     
    	public function presenter(){
    		$this->html("Pièce(s) d'or :",$this->po);
    	}
     
    }
     
    $aventurier = new Joueur();
     
    $aventurier->charger();
     
    //opération sur les pièces d'or
    $aventurier->ajouter_po(2);
     
    $aventurier->sauvegarder();
     
    $aventurier->presenter();
    ?>
    PS - Si vous avez rencontré un tutoriel clair sur sessions+objets, faites-moi signe
    Merci

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Turquie

    Informations forums :
    Inscription : Avril 2005
    Messages : 614
    Points : 502
    Points
    502
    Par défaut
    Salut,

    il faut que ta class soit déclarer avant ton session_start() et après ton session start tu as juste à faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $_SESSION['aventurier'] = new Joueur();
    $_SESSION['aventurier']->charger();
     
    // etc...
    ou alors :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $aventurier = new Joueur();
     
    $aventurier->charger();
     
    //opération sur les pièces d'or
    $aventurier->ajouter_po(2);
     
    $aventurier->sauvegarder();
     
    $aventurier->presenter();
     
    $_SESSION['aventurier'] = $aventurier;
    il faudra toujours que ta class soit charger avant le session_start pour utiliser l'instance de ta class en session.

    edit : tu n'a pas le droit d'utiliser des variables de session dans ta class

    puis pour les echo dans la class c'est pas propre

  3. #3
    Membre à l'essai

    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 20
    Points : 18
    Points
    18
    Par défaut
    Bonjour,

    Merci, cette solution est parfaite... (et l'on se passe donc des $_SESSION dans la classe)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    if (isset($_SESSION['joueur'])){
    	$aventurier = $_SESSION['joueur'];
    }
    else
    {
    	$aventurier = new Joueur("Yves");
    }
     
    	$aventurier->presenter();
    Cependant, Pourquoi est-il interdit de mettre des $_SESSION dans une classe, après tout, lorsque l'on fait des sauvegardes dans la base de données, on passe par mysql_query (et donc par un accès "extérieur") alors pourquoi pas par $_SESSION ?

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Turquie

    Informations forums :
    Inscription : Avril 2005
    Messages : 614
    Points : 502
    Points
    502
    Par défaut
    parce que tu doit obligatoirement faire appel à tes class dont tu veux mettre les objet en session avant le session_start(), donc avant le session_start tu ne peux utiliser de variable de session.

    enfin c surtout que c logique

  5. #5
    Membre à l'essai

    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 20
    Points : 18
    Points
    18
    Par défaut
    Merci, en continuant la recherche je suis tombé sur
    http://www.developpez.net/forums/sho...d.php?t=252828

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Objets toujours lockés par une session KILLED
    Par farenheiit dans le forum Administration
    Réponses: 2
    Dernier message: 17/03/2009, 13h28
  2. Manipulation des objets dans une session
    Par facilus68 dans le forum Hibernate
    Réponses: 5
    Dernier message: 28/12/2007, 14h02
  3. Réponses: 1
    Dernier message: 16/12/2006, 12h01
  4. [POO] objet dans une session
    Par ujoodha dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 22/09/2006, 10h57
  5. variable modifié par une session
    Par Mr Meuble dans le forum Langage
    Réponses: 3
    Dernier message: 08/08/2006, 14h15

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