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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    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

  2. #2
    Membre expérimenté
    Avatar de mathk
    Inscrit en
    Décembre 2003
    Messages
    211
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 211
    Par défaut
    Bien cela depend beaucoup de la manière de traiter tes info

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    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?

  4. #4
    Expert confirmé 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
    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 émérite
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    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

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    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 />"; 
    }

  7. #7
    Expert confirmé 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
    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 confirmé 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
    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 : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    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

  10. #10
    Expert confirmé 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
    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 émérite
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    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

+ 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, 12h28
  2. Réponses: 2
    Dernier message: 17/04/2007, 18h14
  3. [POO] Les attributs d'une classe ?
    Par Metallic-84s dans le forum Langage
    Réponses: 1
    Dernier message: 10/03/2007, 20h42
  4. [VB.NET] Parcourir les attributs d'une classe
    Par pasqwal dans le forum Windows Forms
    Réponses: 3
    Dernier message: 15/02/2005, 10h47
  5. Réponses: 7
    Dernier message: 08/01/2005, 14h24

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