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] retourner les attributs d'une classe


Sujet :

Langage PHP

  1. #1
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut [POO] retourner les attributs d'une classe
    Bonjour a tous
    je débute en objet avec php
    j'ai une classe la suivante:
    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 cNewDossier{
    		var $numDossier;
    		var $nomAssure1;
    		var $prenomAssure1;
                                    ....
     
    		// CONSTRUCTEUR
       	function cNewDossier(){
    		$this->num = 1;
                                    $this->nomAssure1 = 'kid';
                                    $this->prenomAssure1 = 'jo';			                ...
       	}
     
    	function getValeur($attribut){
    		return $this->$attribut;
    	}
    }
    Bon la méthode getValeur($attribut) me cause probleme voilà pourquoi
    J'aimerais avoir les valeurs de mes attributs dans une autre page comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    //mon dossier classe avec le nom de ma page contenant la classe
    require("../Classes/cNewDossier.php");
    ...
    $_SESSION['newDossier'] = new cNewDossier;
     
    if(isset($_SESSION['newDossier'])){
    echo"La valeur dans le numDossier est ".$_SESSION['newDossier']->getValeur('numDossier')."";			
    }
    Bon en fait je croyais que ca ne marchais pas...mais j'ai vu mon erreur en postant...

    Bref est ce que je me complique la vie en faisant ainsi??
    Y aurait il une manière plus simple de faire?

    Car je n'ai que mis une partie de ma classe mais admettons que j'ai 15 attributs...est-ce qu'il faut que j'appelle 15 fois la méthode getvaleur() ou il y a moyen de retourner tous les attributs de la classe d'un seul coup?

    Merci pour vos suggestion
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  2. #2
    Membre actif
    Avatar de mathk
    Inscrit en
    Décembre 2003
    Messages
    211
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 211
    Points : 233
    Points
    233
    Par défaut
    Bien cela depend beaucoup de la manière de traiter tes info
    Si grande est la faiblesse d'une âme, dont la raison est partie!
    Ne jamais embrouiller ni abasourdir par une foule d'images le génie intérieur qui réside au fonde de sa poitrine,...
    L'ambition est le rfuge de l'échec. "Oscar Wild"

  3. #3
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    ok mais bon comment faire pour retourner tous les attribut de la classes d'un meme coup?
    Est ce qu'on peut ou il faut faire l'appel de la méthode 15 fois...une pour chaque champs?
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  4. #4
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Personnelement j'aurais fait comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(!isset($_SESSION['newDossier'])){
       $_SESSION['newDossier'] = new cNewDossier;
    }
    echo"La valeur dans le numDossier est ".$_SESSION['newDossier']->getValeur('numDossier')."";
    Par contre je comprend pas ta question "Est ce qu'on peut ou il faut faire l'appel de la méthode 15 fois...une pour chaque champs?" Quel est ton besoin ? Pourquoi devrais-tu tout ramener en un appel ?

  5. #5
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    salut oki merci pour la partie de code...c'est plus logic effectivement...

    à prime a bord le fait d'utiliser une class était parceque j'ai un formulaire hyper long
    que j'ai décider de séparer en 2 pages...
    mais comme je dois avoir tous les champs pour faire mes requete car il y en a plusieur ben je dois garder en mémoire les champs du premiere formulaire...voilà pourquoi j'utilise une classe que je garde en session en fait c'est pour éviter de me creer 15 champs hidden...conseil de siddh

    Donc la j'ai tout en mémoire pas de pb ca marche mais comme je dois récupérer tous les champs de ma classe, et bien je me demandais comment faire pour que ce soit facile...
    J'ai la fonction getValeur() mais j'ai 15 attribut dans cette calsse en session...
    comme je les récupère tous pour faire mes requete?..dois-je appeler 15 fois la méthodre getvaleur òu encore il y a moyen plus facile de le faire?

    merci pour votre aide
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  6. #6
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    Attention, si tu fais du php 4, il faut mettre =& sinon tu récupéreras pas ton objet.

    Si php5, il vaut mieux mettre __construct pour le constructeur.

    Si tu veux gérer tes getters et setters comme ça, je te conseille a ce moment là de n'avoir qu'un seul atttribut qui serais un tableau associatif.

    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
     
    class cNewDossier{
          var $attributs;
     
     
          // CONSTRUCTEUR
          function cNewDossier(){
          $this->attributs["numDossier"] = 1;
          $this->attributs["nomAssure1"] = 'kid';
          $this->attributs["prenomAssure1"] = 'jo'; 
     
          }
     
       function getValeur($attribut){
          if(array_key_exists($attribut,$this->attributs))
              return $this->attributs[$attribut];
          else
              return false; // ou null au choix ;)
       }
     
       function setValeur($attribut,$valeur){
           $this->attributs[$attribut] = $valeur;
       }
     
       function getAll(){
          return $this->attributs;
       }
    }
    comme ça tu pourras faire un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    foreach($_SESSION['newDossier']->getAll() as $key => $value){
        echo "La valeur dans ".$key." est ".$value."<br />"; 
    }
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  7. #7
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    alors soit tu considères que tes attributs sont publiques et dans ce cas là tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $_SESSION['newDossier']->numDossier;
    $_SESSION['newDossier']->nomAssure1;
    $_SESSION['newDossier']->prenomAssure1;
    Soit tu considères qu'ils sont protégés/privés, dans ce cas là tu passes par un getter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $_SESSION['newDossier']->getNumDossier();
    $_SESSION['newDossier']->getNomAssure1();
    $_SESSION['newDossier']->getPrenomAssure1();
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $_SESSION['newDossier']->getValeur('numDossier');
    $_SESSION['newDossier']->getValeur('nomAssure1');
    $_SESSION['newDossier']->getValeur('prenomAssure1');

  8. #8
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Citation Envoyé par siddh
    Attention, si tu fais du php 4, il faut mettre =& sinon tu récupéreras pas ton objet.
    Si il le récupérera mais ce sera un clone.

  9. #9
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    oui effectivement, je me suis mal exprimé

    mais bon vaut mieux le mettre pour travailler toujours sur le même objet et surtout pas trop charger la mémoire, la ça va y en a qu'un mais apres on sais jamais
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  10. #10
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Tout à fait, je confirme en connaissance de cause pas plus tard qu'hier j'ai passer une demi heure sur un test qui passait pas à cause de ce foutu &

  11. #11
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    Ouff ce sont de super réponse merci beaucoup a vous tous!!!
    très rapide en plus
    je vais voir ca demain au travail!
    bonne soirée...mois ici il et 18h
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

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

Discussions similaires

  1. [POO] Lister les membres d'une classe
    Par Asmodean dans le forum Langage
    Réponses: 2
    Dernier message: 11/05/2007, 11h28
  2. Réponses: 2
    Dernier message: 17/04/2007, 17h14
  3. [POO] Les attributs d'une classe ?
    Par Metallic-84s dans le forum Langage
    Réponses: 1
    Dernier message: 10/03/2007, 19h42
  4. [VB.NET] Parcourir les attributs d'une classe
    Par pasqwal dans le forum Windows Forms
    Réponses: 3
    Dernier message: 15/02/2005, 09h47
  5. Réponses: 7
    Dernier message: 08/01/2005, 13h24

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