Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/05/2011, 16h06   #1
Invité de passage
 
Inscription : février 2010
Messages : 12
Détails du profil
Informations forums :
Inscription : février 2010
Messages : 12
Points : 1
Points : 1
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 :
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
zinka est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 16h20   #2
Membre Expert
 
Avatar de Djakisback
 
Inscription : février 2005
Messages : 1 791
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 791
Points : 1 681
Points : 1 681
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 :
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 :

Citation:
$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.
Djakisback est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 16h29   #3
Invité de passage
 
Inscription : février 2010
Messages : 12
Détails du profil
Informations forums :
Inscription : février 2010
Messages : 12
Points : 1
Points : 1
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
zinka est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 16h33   #4
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 656
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

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

Informations forums :
Inscription : avril 2007
Messages : 3 656
Points : 5 359
Points : 5 359
Tout simplement instancier autant d'objets que nécessaire :
Code :
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;
}
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 16h41   #5
Invité de passage
 
Inscription : février 2010
Messages : 12
Détails du profil
Informations forums :
Inscription : février 2010
Messages : 12
Points : 1
Points : 1
TIP TOP, ca fonctionne comme ca, merci bcp !

Je pensais qu'on ne pouvais pas faire un new Object() à l'interieur de l'Object.
zinka est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h36.


 
 
 
 
Partenaires

Hébergement Web