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] Propriétés comme des objets dans une classe [PHP 5.0]


Sujet :

Langage PHP

  1. #1
    Membre régulier

    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 105
    Points : 84
    Points
    84
    Par défaut [POO] Propriétés comme des objets dans une classe
    Salut tout le monde,

    J'ai réalisé une classe comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class Prop {
      public $function = 'MaFonction';
      public $params = array('A', 'B', 'C');
    }
    Pour lire les propriétés je dois faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $Prop = new Prop();
    echo $Prop->function;
    echo $Prop->params;
    mais ce que je cherche à faire c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $Prop = new Prop();
    echo $Prop->function;
    echo $Prop->function->params;
    Comment modifier la classe pour pouvoir faire ça?

    Merci d'avance

  2. #2
    Membre actif Avatar de speedy_g
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 213
    Points : 242
    Points
    242
    Par défaut
    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
     
    class Prop {
      public $function;
     
    public function __construct()
    {
         $this->function = new MaFunction();
    }
    }
    class MaFunction
    {
     
      public $params = array('A', 'B', 'C');
      public function __toString()
      {
             return get_class($this);
       }
    }
     
    $Prop = new Prop();
    echo $Prop->function;
    echo $Prop->function->params;
    Un truc du genre ?

  3. #3
    Membre régulier

    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 105
    Points : 84
    Points
    84
    Par défaut
    Merci pour la réponse speedy_g ça fonctionne bien,
    mais la valeur de la propriété $fucntion se change dynamiquement et donc pour la solution que tu m'a proposé "class MaFunction" doit être changer automatiquement

  4. #4
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Bonjour,

    essaies ceci :

    Code php : 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
    29
    30
    31
    32
    33
    34
     
     class Prop {
     
    	public $function;
     
    	public function __construct($classe){
    		$this->function = new $classe;
    	}
     
    }
     
    class MaFunction
    {
      public $params = array('A', 'B', 'C');
     
      public function __toString(){
    	return get_class($this);
      }
     
    }
     
    class MaFunction2
    {
      public $params = array('A', 'B', 'C');
     
      public function __toString(){
    	return get_class($this);
      }
     
    }
     
    $Prop = new Prop('MaFunction');
    echo $Prop->function;
    echo $Prop->function->params;

  5. #5
    Membre régulier

    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 105
    Points : 84
    Points
    84
    Par défaut
    Merci, mais c'est limité par seulement deux valeurs, les valeurs de $Prop->function et $Prop->function->params peuvent être changé par des centaines de valeurs

  6. #6
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    explique nous plus en détail ce que représentent tes classes du point de vue objet
    GNAP !

  7. #7
    Membre régulier

    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 105
    Points : 84
    Points
    84
    Par défaut
    Je cherche à faire comme en SimpleXML
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $xml->book->authors->first

  8. #8
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonjour,

    Il suffit d'exposer des membres publics ou d'utiliser la méthode magique __get si vous ne souhaitez pas que la visibilité soit publique ... :
    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
     
    class maClass {
        public $member;
     
        public function __construct(){
            $this->member= new autreClass;
        }
    }
    class autreClass {
        public $other_member;
     
        public function __construct(){
            $this->other_member = new stdClass;
        }
    }
    $inst = new maClass;
    var_dump($inst->member->other_member);

  9. #9
    Membre régulier

    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 105
    Points : 84
    Points
    84
    Par défaut
    Merci à tous pour votre aide,
    Il suffit d'exposer des membres publics ou d'utiliser la méthode magique __get si vous ne souhaitez pas que la visibilité soit publique
    je vais utiliser les méthodes magiques __set et __get

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

Discussions similaires

  1. préciser le type des objets dans une classe dérivée d'arraylist
    Par JCD21 dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 28/06/2008, 18h04
  2. [POO] Un objet dans une classe
    Par Arnich dans le forum Langage
    Réponses: 6
    Dernier message: 25/11/2007, 22h46
  3. Réponses: 8
    Dernier message: 16/02/2007, 15h55
  4. [POO] import d'objet dans une classe
    Par wdionysos dans le forum Langage
    Réponses: 3
    Dernier message: 01/04/2006, 21h05
  5. Réponses: 2
    Dernier message: 27/03/2005, 16h09

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