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 :

Créer un tableau d'objet à l'intérieur de l'objet


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2010
    Messages : 12
    Points : 5
    Points
    5
    Par défaut Créer un tableau d'objet à l'intérieur de l'objet
    Bnjour tout le monde,

    Je suis fasse un petit problème avec l'utilisation de la POO en PHP. Voici mon problème, je désire créer un tableau d'objet à l'intérieur de la classe de l'objet.

    Voici la méthode de ma classe UserModel :

    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
     
        public function listRole() {
     
            $DB = $this->connexion();
     
            $query = "SELECT * FROM roles WHERE user_id = 1";
            $rolesDB = $DB->query($query)->fetchAll();
     
            $i = 0;
     
            foreach($rolesDB as $role)
            {
                $this->roleID =($role['role_id']);
                $this->userID = ($role['user_id']);
                $this->name = ($role['ROL_name']);
     
                $roles[$i] = $this;
     
                $i++;
            }
     
            return $roles;
        }
    Mais le problème avec ce code, c'est que lorsque il y a plusieurs élément différents qui me sont retourné de la base de donnée, le script crée un tableau avec plusieurs fois le même objet.

    Est-ce que vous pensez savoir d'où viens le problème ?

    Merci d'avance

  2. #2
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Salut,
    tu désires créer un tableau d'objets de quelle classe ?
    Car là c'est un peu dur de comprendre ce que tu veux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     $i = 0;
     
            foreach($rolesDB as $role)
            {
                $this->roleID =($role['role_id']);
                $this->userID = ($role['user_id']);
                $this->name = ($role['ROL_name']);
     
                $roles[$i] = $this;
     
                $i++;
            }
    Tu réécris plusieurs fois les champs rolID, userID, ce qui semble ne pas avoir d'intérêt. Ensuite quand tu fais :

    $roles[$i] = $this;
    tu crées une nouvelle entrée vers $this, mais toutes les entrées du tableau vont pointer vers le même objet.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2010
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Ah ok je comprend !

    Mais alors comment faire pour que mon tableau contienne plusieurs objets distinct et pas plusieurs fois la même référence d'un objet.

    Au niveau des classes, la fonction se trouve dans la classe Role et j'aimerai créer un tableau contenant des objets role de cette même classe.

    Merci pour la rapidité de ta réponses

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Tout simplement instancier autant d'objets que nécessaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    foreach($rolesDB as $role)
    {
    	$role_i = new Role();
    	$role_i->roleID =($role['role_id']);
    	$role_i->userID = ($role['user_id']);
    	$role_i->name = ($role['ROL_name']);
     
    	$roles[] = $role_i;
    }

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2010
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    TIP TOP, ca fonctionne comme ca, merci bcp !

    Je pensais qu'on ne pouvais pas faire un new Object() à l'interieur de l'Object.

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

Discussions similaires

  1. Créer un tableau ou collection pour objets utilisateur Excel VBA
    Par andromedor dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 11/02/2010, 13h49
  2. créer un tableau d'objet
    Par une_tite_question dans le forum Langage
    Réponses: 5
    Dernier message: 21/01/2010, 18h16
  3. Créer un tableau de references d'objets
    Par NejNej dans le forum Windows Forms
    Réponses: 4
    Dernier message: 14/05/2008, 16h29
  4. Créer un tableau/liste d'objets
    Par TYBO_2 dans le forum Langage
    Réponses: 5
    Dernier message: 15/04/2008, 17h25
  5. créer un tableau d'objets
    Par abiraa dans le forum C++
    Réponses: 36
    Dernier message: 15/04/2007, 12h51

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