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 :

parcourir les objets d'une classe


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2010
    Messages : 28
    Par défaut parcourir les objets d'une classe
    Bonjour,

    Je débute en PHP objet, j'effectue déjà du developpement objet en vb.net alors je sais pas forcement si l'utilisation et les fonctionnalités sont les même. Les cours expliquent bien pour s'initier mais j'ai du mal à trouver pour l'utilisation des classes et les fonctions couramment utilisées.
    (s'il y a des cours ou tutos pour aller un peu plus loin en POO je suis preneuse !)

    Pour l'instant j'ai besoin d'une fonction qui parcoure une classe afin de rechercher un objet particulier, j'utilise beaucoup ce genre de fonctions de parcours de classe dans la classe en question.

    De plus, j'ai dans mon application des utilisateurs et des services, et un tableau d'utilisateurs pour chaque service. Je souhaiterais que mon constructeur d'utilisateurs ajoutent l'objet utilisateur en création dans le tableau.


    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
    class Utilisateur
    {
    var $uti_id;
    var $uti_nom;
    var $uti_pass;
    var $uti_mail;
    var $uti_serv;
     
    function Utilisateur($id, $nom, $pass, $mail, $serv_id){
    $this->uti_id=$id;
    $this->uti_nom=$nom;
    $this->uti_pass=$pass;
    $this->uti_mail=$mail;
    $this->uti_serv=? ;//recherche de l'objet service correspondant à l'identifiant du service
     
    //ajout de l'utilisateur dans la liste des utilisateurs du service
    }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class Service
    {
    var $serv_id;
    var $serv_abr;
    var $serv_lib;
    var $serv_uti;
     
    function Service($id, $abr, $lib){
    $this->serv_id=$id;
    $this->serv_abr=$abr;
    $this->serv_lib=$lib;
    }
    }

    Merci d'avance pour toute aide.

  2. #2
    Membre Expert Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Par défaut
    Bonjour,

    je vois deux possibilités.

    soit tu passes l'objet service par référence et ton constructeur de utilisateur deviens

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function Utilisateur($id, $nom, $pass, $mail, &$serv){
      $this->uti_id=$id;
      $this->uti_nom=$nom;
      $this->uti_pass=$pass;
      $this->uti_mail=$mail;
      $this->uti_serv=$serv;
      $serv->serv_lib[] = $this;
    }
    ou alors tu demandes a ta classe service, d'ajouter de créer un utilisateur. Et tu ajoutes l'utilisateur pour completer ton service.
    Avec quelque chose dans le genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
     function addnewUser($params)
     {
       $this->serv_lib[] = new Utilisateur($params)
     
     }

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2010
    Messages : 28
    Par défaut
    Merci je te dirais si cela marche !

    Mais j'ai tout de même du mal à trouver une fonction qui parcours tout les objets d'une classe par un foreach par exemple

  4. #4
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Bonjour,

    Regardes cette discussion sur ce POST ici et prends comme exemple le développement de la class:
    class Participants implements Iterator
    Cette class utilise ce que tu souhaites.

  5. #5
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2010
    Messages : 28
    Par défaut
    Merci beaucoup c'est tout à fait ce dont j'avais besoin pour parcourir mes classes !

    Mon problème était de vouloir programmer comme en vb.net, et de ne donc pas passer par un tableau.

  6. #6
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2010
    Messages : 28
    Par défaut
    Par rapport à ce post, j'ai donc essayé cette solution qui ne fonctionne pas

    mes deux classes Droit et Utilisateur :
    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
    class Utilisateur
    {
    //variables locales
    var $uti_id;
    var $uti_nom;
    var $uti_pass;
    var $uti_mail;
    var $uti_droi;
     
    //constructeur
    function __construct($id, $nom, $pass, $mail, $droi){
    $this->uti_id=$id;
    $this->uti_nom=$nom;
    $this->uti_pass=$pass;
    $this->uti_mail=$mail;
    $this->uti_droi=$droi;
    si::new_utilisateur($this);
    }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class Droit
    {
    //variables locales
    var $droi_id;
    var $droi_lib;
     
    //constructeur
    function __construct($id, $lib){
    $this->droi_id=$id;
    $this->droi_lib=$lib;
    si::new_droit($this);
    }
    }
    La classe qui contient les tableaux des objets des autres classes
    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
    class SI
    {
    var $droits;
    var $utilisateurs;
     
    function __construct{
    $this->droits = array();
    $this->utilisateurs = array();
    }
     
    function new_utilisateur($uti){
    $this->utilisateurs[$uti->uti_id] = $uti;}
     
    function new_droit($droi){
    $this->droits[$droi->droi_id] = $droi;}
     
    function montrer_droit(){
    foreach($this->droits as $droit)
    {
                echo $droit->droi_id;
        }
    }
    }
    suite du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $si = new SI;
     
    $droi=new Droit(1, "admin");
    $droi=new Droit(2,"consult");
    $uti=new Utilisateur(1,"albert","alb","albert@...",2);
    $uti=new Utilisateur(2,"didier","did","didier@...",1);
     
    $si->montrer_droit();
    Peut etre une erreur dans l'appel de la fonction new_laclasse dans le constructeur de la classe ?

    sinon je ne vois pas je suis assez perdue !

  7. #7
    Membre Expert Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Par défaut
    Bonjour, ton objet Si ne connait pas les droits et les utilisateurs :

    pour ca tu dois utiliser tes fonctions "new_droit" et "new_utilisateur" avec les bons objets pour que ta boucle affiche quelque chose.

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

Discussions similaires

  1. Parcourir les propriétés d'une classe
    Par eagleleader dans le forum ASP.NET
    Réponses: 11
    Dernier message: 07/10/2008, 15h06
  2. Parcourir les éléments d'une classe
    Par rvhp2 dans le forum Langage
    Réponses: 10
    Dernier message: 01/10/2008, 20h06
  3. [VB.NET 2005] Parcourir les propriétes d'une Class
    Par ricil78 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 27/03/2007, 22h47
  4. Parcourir les membres d'une classe
    Par oodini dans le forum C++
    Réponses: 4
    Dernier message: 20/10/2006, 23h59
  5. [VB.NET] Parcourir les attributs d'une classe
    Par pasqwal dans le forum Windows Forms
    Réponses: 3
    Dernier message: 15/02/2005, 10h47

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