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

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 78
    Points : 46
    Points
    46
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Il manque l'objet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     echo $tonobjet->getUserScore();

  3. #3
    Membre expérimenté
    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
    Points : 1 631
    Points
    1 631
    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 du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 78
    Points : 46
    Points
    46
    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 expérimenté
    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
    Points : 1 631
    Points
    1 631
    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 du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 78
    Points : 46
    Points
    46
    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 éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    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
    Points : 16 545
    Points
    16 545
    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.

  8. #8
    Membre expérimenté
    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
    Points : 1 631
    Points
    1 631
    Par défaut
    Tu ne fait pas la même chose ici :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public function getUserName(){
        $this->nom;
    }  
    public function getUserScore(){			 
        $this->score;
    }
    public function getUserGagne(){			 
        $this->gagne; 
    }
    ...
    echo $jo->getUserName();
    echo $jo->get()getUserScore;
    echo $jo->getUserGagne();

    et ici :
    Code php : 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; 
    }

    Dans le premier tu veut afficher le retour des différentes fonctions, seulement tu ne retourne rien :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public function getUserScore(){			 
        $this->score;
    }

    Tu ne fait appel qu'à l'attribut $this->score sans aucun traitement.

    Donc pour que le premier code soit le "même" fonctionnement que le second :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public function getUserName(){
        return $this->nom;
    }  
    public function getUserScore(){			 
        return $this->score;
    }
    public function getUserGagne(){			 
        return $this->gagne; 
    }
    ...
    echo $jo->getUserName();
    echo $jo->get()getUserScore;
    echo $jo->getUserGagne();

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 78
    Points : 46
    Points
    46
    Par défaut
    sal§§§§§§§§§§§§§§§§ri de return

    Le pire c'est que j'ai fait du c++ à l'université .
    Décidément je suis vraiment nul comme programmateur.

    Merci en tous cas à vous tous.

+ 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