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] héritage d'une classe: où vont les valeurs des attributs?


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 69
    Points : 46
    Points
    46
    Par défaut [POO] héritage d'une classe: où vont les valeurs des attributs?
    Bonjour,
    Soit une fille qui hérite d'une classe mère:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    class mere {
      protected $_a
     
      function __construct {
        $this->_a = "toto";
      }
    }
     
    class fille extends mere {
    }
     
    $foo = new fille()
    echo $foo->_a;
    Ma question est : les valeurs des attributs sont-elles héritées des classes mère? Si oui pourquoi ça marche pas chez moi?

  2. #2
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 70
    Points : 79
    Points
    79
    Par défaut
    ta classe fille doit instancier la classe mere , dans son constructeur par un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    parent::__construct();

  3. #3
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 69
    Points : 46
    Points
    46
    Par défaut
    Merci pour l'astuce, un peu lourd, mais ça marche. Cependant mon constructeur requiert des paramètres j'ai du mal à voir où trouver les paramètres a lui fournir.

    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
     
    class mere {
      protected $_a
     
      function __construct($_name) {
        $this->_a = $_name;
      }
    }
     
    class fille extends mere {
      parent::__construct(?)
    }
     
    $foo = new fille("toto");
    echo $foo->_a;

  4. #4
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    Tu as dû louper une partie de la phrase de f.lam.
    Citation Envoyé par f.lam Voir le message
    dans son constructeur

  5. #5
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 70
    Points : 79
    Points
    79
    Par défaut
    voila ce qu'il faudrait mettre il me semble

    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 mere {
      protected $_a
     
      function __construct($_name) {
        $this->_a = $_name;
      }
    }
     
    class fille extends mere {
     
      function __construct($_name) {
         parent::__construct($_name);
      }
     
    }
     
    $foo = new fille("toto");
    echo $foo->_a;
    Dans ta classe fille, ton parent::_cosnstruct() se baladait n'importe ou

  6. #6
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 69
    Points : 46
    Points
    46
    Par défaut
    Merci f.lam et bien vu!

  7. #7
    Membre averti Avatar de Kennel sébastien
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 226
    Points : 329
    Points
    329
    Par défaut
    Ta classe mère doit être abstraite, car on hérite jamais d'une classe concrète...

  8. #8
    Membre régulier Avatar de foolib
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 111
    Points : 90
    Points
    90
    Par défaut classe mère non instanciable ?
    Arrêtez moi si je me trompe mais une classe mère n'est pas nécessairement abstraite ...
    Admettons qu'une classe carré hérite de la classe rectangle ...
    le rectangle doit pouvoir rester instanciable non ?

  9. #9
    Membre averti Avatar de Kennel sébastien
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 226
    Points : 329
    Points
    329
    Par défaut
    C'est un principe de base...
    La classe Carré ne doit pas hérité de la classe Rectangle, il te manque une classe abstraite avec une interface et boom tu as placé le motif Stratégie

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

Discussions similaires

  1. Trouver une expression régulière pour les valeurs des noeuds XML
    Par Motin dans le forum Format d'échange (XML, JSON...)
    Réponses: 11
    Dernier message: 05/10/2011, 17h51
  2. Récupérer les valeurs des attributs dans un fichier XML ?
    Par chinoismasque dans le forum Windows Phone
    Réponses: 3
    Dernier message: 01/08/2011, 10h15
  3. [DOM] changer les valeurs des attributs d'un fichier XML
    Par nonna dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 21/03/2008, 11h56
  4. Réponses: 2
    Dernier message: 29/03/2007, 12h02
  5. Réponses: 4
    Dernier message: 25/07/2006, 16h30

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