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 :

Classes et sessions


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 78
    Par défaut Classes et sessions
    Bonjour à tous,

    J'espère que vous avez passé une bonne fête de la musique à (programmer lol) :)

    Voilà 2 jours que je lutte pour transmettre un objet avec session.
    Donc je suis revenue au commencement et je me suis aperçu que ma class ou ma méthode merde quelque part.

    Donc voila j'ai un fichier général ou j'appelle ma session:


    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
     if (($name) != "")
         {
     
           //Ici je créer ma session
           include ("sessions.php");
     
    	//ici j essaye d'afficher mais erreur ???????	 
          echo getUserScore();
    	echo  getUserName();
    	  echo getUserGagne();
     
    }else {
         $flag=1;
    	 require("index.php");
         }
    Ma session appelle ma class:



    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
    <?php session_start();
     
    include("classe/joueur.php");
     
    //construction du joueur
    $player =$name;
    $point=0;
    $Gagne=1;
     
    $jo = new Joueur ($player,$point,$Gagne);
     
    //serialisation et transmition ࡬a variable session
    $trans=serialize($jo);
     
    $_SESSION['joueur']=$trans;
    La classe joueur

    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
    <?php 
    //dénition de l'objet joueur
     
    class Joueur { 
             private $nom;
             private $score; 
             private $gagne;
     
     //on créer un constructeur destructeur
     
            public function __construct ($player,$point, $Gagne) {
                     $this->nom=$player;
                     $this->score=$point;
    				 $this->gagne= $Gagne;
             } 
     
    		 public  function __destruct() {
                     $this->nom;
                     $this->score;
    				 $this->gagne;
                   }
     
     
     
        //on créer un fonction de sortir     		 
            public function getUserName(){
    		     $this->nom;
                 }  
            public function getUserScore(){			 
    				  $this->score;
    				 }
    	    public function getUserGagne(){			 
    				    $this->gagne; 
    				 }
     
     
     }
     ?>

    Donc voilà, désolé pour la longueur mais c'était un peu dur à expliquer.
    je ne vois vraiment pas pourquoi il me refuse mon echo getUserName().

    Si vous avez trouvé merci de m'expliquer où je me suis trompé.

    cordialement. :)

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il manque l'objet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     echo $tonobjet->getUserScore();
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre Expert
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Par défaut
    Bonjour,

    C'est quoi l'erreur ? Je pense à undefined function getUserScore()
    Essaye ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $jo->getUserScore();
    Comme tu l'appel getUserScore() correspond à une fonction alors que toi tu veut appeler une méthode de la classe Joueur, il faut alors passer par une instance de la classe Joueur (objet de type Joueur qui se trouver être $jo dans le fichier session.php).

    Relis bien les différent tuto sur le php Objet disponible sur developpez.net

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 78
    Par défaut
    Merci a vous

    j'ai trouver il fallais mettre les echo dans la methode:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     public function getUserName(){
        echo $this->nom;
    }  
    public function getUserScore(){			 
    	echo $this->score;
    }
    public function getUserGagne(){			 
    	echo $this->gagne;
    et appeler avec
    merci

  5. #5
    Membre Expert
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Par défaut
    Généralement les méthodez préfixéés par le mot get...() ne sont pas là pour afficher l'information mais la retourner, elle pourra être utilisé pour afficher ou pour tout autre utilisation (ex : comparer le nom avec une autre chaîne de caractère).

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 78
    Par défaut
    je sais que get ne sert qu'à envoyer des valeurs mais si je fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     public function getUserName(){
                    $this->nom;
                 }  
            public function getUserScore(){			 
    				$this->score;
    				 }
    	    public function getUserGagne(){			 
    				  $this->gagne; 
    				 }
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $jo->getUserName();
    ça ne marche pas mais si je fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     public function getUserName(){
                     echo $this->nom;
                 }  
            public function getUserScore(){			 
    				 echo $this->score;
    				 }
    	    public function getUserGagne(){			 
    				   echo $this->gagne; 
    				 }
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $jo->getUserName();
    ça marche et je me demande bien pourquoi car normalement ça revient au même.

    En plus la suite de mon programme ne marche pas.
    à savoir la session avec serialisation et deserialisation

    Serialisation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    session_start(); 
     
     
    include("joueur.php");
     
    $point=0;
    $Gagne=1;
    $jo = new Joueur ($name,$point,$Gagne);
     
    $chaine=serialize($jo);
    $_SESSION['joueur']=$chaine;
    Deserialisation:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
     include("joueur.php");
     if (isset($_SESSION['joueur'])){
     $yu=$_SESSION['joueur'];
         $jo=unserialize($yu);
             $jo= new Joueur();
      }
     else {
     echo("rien de rien");
      $jo->getUserName();
     
             return 0;
     }
    Voila je vais jamais m'en sortir avec l'objet .
    En tout cas merci à vous tous.

  7. #7
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,

    je pense que tu veux brûler les étapes : avant de t'attaquer aux mécanismes avancés comme la sérialisation/déserialisation, je pense que tu devrais potasser un peu le PHP et son modèle objet sinon t'es pas sorti de l'auberge.

    J'ai repris ta classe Joueur pour te montrer
    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
    <?php
     
    class Joueur
    {
        private $nom;
        private $score;
        private $gagne;
     
        /**
         * @param string $player
         * @param string $point
         * @param string $gagne
         */
        public function __construct($player, $point, $gagne)
        {
            $this->nom   = $player;
            $this->score = $point;
            $this->gagne = $gagne;
        }
     
        /**
         * @return string
         */
        public function getUserName()
        {
             return $this->nom;
        }
     
        /**
         * @return string
         */
        public function getUserScore()
        {
            return $this->score;
        }
     
        /**
         * @return string
         */
        public function getUserGagne()
        {
            return $this->gagne;
        }
    }
    Le modèle objet est riche et comporte quelques concepts complexes alors pose toi avant de continuer sinon tu jetteras l'éponge.

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

Discussions similaires

  1. Passage de classe par session
    Par Invité dans le forum Langage
    Réponses: 4
    Dernier message: 02/07/2008, 20h51
  2. pb de classes et session
    Par renard.masque dans le forum Langage
    Réponses: 1
    Dernier message: 04/05/2008, 17h22
  3. Réponses: 7
    Dernier message: 24/08/2007, 10h57
  4. Réponses: 11
    Dernier message: 09/12/2005, 14h59
  5. [VB.NET] Server.MapPath et Session dans une classe
    Par nancy54 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 09/09/2004, 14h23

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