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 :

[POO] Problème d'affichage d'objet


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 10
    Par défaut [POO] Problème d'affichage d'objet
    Bonjour,
    je débute en php5, et je rencontre un problème auquel je n'arrive pas à trouver de solutions.

    Je vous explique:
    J'ai deux classes: user.php et forum.php.
    La classe user va me servir à créer des utilisateurs:

    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
    <?php
     
    class user{
     
     private $id;
     private $nom;
     private $prenom;
    private $login;
     
     
      // Constructeur de la classe.
        function user($id,$nom,$prenom,$login) {
            $this->id = $id;
            $this->nom = $nom;
            $this->prenom = $prenom;
            $this->login = $login;
        }
     
         function __construct(){
         }
     
     
     
     
        // Méthode d'affichage de l'objet.
        function __tostring() {
            return 'user id: '.$this->id.'<br>'.'user nom: '.$this->nom.'<br>'.'user prenom: '.$this->prenom.'<br>'.'user login: '.$this->login.'<br>';
        }
    }
     
    ?>
    Dans la classe forum, je souhaite enregistrer un user entant qu'attribut:

    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
    <?php
     
    class forum{
     
     private $name;
     private $user;
     
      // Constructeur de la classe.
        function __construct($name,user $user) {
     
            $this->name = $name;
            $this->user = $user;
        }
     
        // Méthode d'affichage de l'objet.
        function __tostring() {
            return 'forum: '.$this->name.'<br> user du forum: '.$this->user.'<br>';
        }
     
     
    }
    ?>
    Comme vous pouvez le constater je met mon user en parametre de mon constructeur afin de l'initialiser.

    Et voici ma page index.php, dans laquelle je fais mes créations:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
     
     function __autoload($class_name) {
        require_once $class_name . '.php';
    }
     
    $user=new user(0,"monNom","monPrenom","monLogin");
    $forum=new forum("forum1",$user);
     
    echo($forum);
    ?>
    Le problème est que cela ne m'affiche pas les informations du user qui a été créé.

    Pouvez vous m'expliquer pourquoi?
    merci

  2. #2
    Fabouney
    Invité(e)
    Par défaut
    Bonjour,

    piurquoi écrit tu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     function __construct($name,user $user) {
     
            $this->name = $name;
            $this->user = $user;
    }
    il est inutile et faux de préciser le type d'une variable passer en parametre à une méthode de classe en PHP, c'est pas comme en java, si tu lui passes tout simplement $user en paramètre PHP sait de quelle classe hérite $user, tu pourras donc accéder à ses attributs ... :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function __construct($name,$user) {
     
          $this->name = $name;
          $this->user = $user;
    }
    et puis je pense tout simplement qu'il prend pas en comtpe la méthode __tostring de la clase users depuis la méthode __tostring de la classe forum fait des test intermédiaire.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 10
    Par défaut
    cela ne change pas, il est autorisé de mettre le type meme si ca ne sert a rien.
    J ai essayé hier ca mais ca n'a rien changé, j ai juste oublié de l'enlever.

    Le problème est qu'au lieu de m'afficher les caractéristiques de mon user, je vais avoir quelquechose du style, reference sur l' objet

  4. #4
    Fabouney
    Invité(e)
    Par défaut
    je suis d'accord, mais quand tu fait echo($forum) tu fait pas implicitement un echo($user). donc la methode __tostring() de la classe user n'est pas prise en compte.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 10
    Par défaut
    ok, mais il reconnait bien l'objet alors?
    Et si je souhaite afficher user, je dois faire un appel de toString sur user dans le toString de forum?

  6. #6
    Fabouney
    Invité(e)
    Par défaut
    il connaitra pas non plus, forum n'hérite pas des méthode de user. si tu veux savoir s'il connait bien l'object fait un var_dump($user) dans le constructeur de la classe forum et tu seras fixé.
    soit tu fait en sorte que forum hérite de user et dans ce cas tu auras accès à tout les attributs, méthode de user.
    mais déjà je vois pas dans quel but tu veux faire ceci et pourquoi tu tient tant à utiliser __tostring().

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

Discussions similaires

  1. Problème d'affichage des objets graphiques
    Par Johngtrs dans le forum Android
    Réponses: 19
    Dernier message: 31/03/2013, 18h44
  2. Problème d'affichage d'objets dans un 'Screen'
    Par Euphoria S' dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 31/01/2013, 14h46
  3. Réponses: 5
    Dernier message: 18/12/2009, 17h05
  4. Réponses: 0
    Dernier message: 19/11/2009, 17h16
  5. Problème d'affichage perso-objets (moteur isométrique)
    Par swain.dakota dans le forum Développement 2D, 3D et Jeux
    Réponses: 7
    Dernier message: 14/07/2009, 16h11

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