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] Problème de surcharge


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 5
    Par défaut [POO] Problème de surcharge
    Bonjour à vous mon problème et pas tres compliqué mais je sais pas comment le résoudre...
    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
    Class Maman {
    public function __construct() {
        $this->load();
    }
     
    public function load() {
        if (...) {
            /// du code
        } else {
            $this->loadDefault();  
        }
    }
     
    public function loadDefault() {
        //...
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Class Fille extends Maman {
    public function __construct() {
        parent::_construt();
        //...
    }
     
    public function loadDefault() {
        //...autre chose que Maman::loadDefault()
    }
    Quand je créé une instance de la classe Fille, la méthode Fille::loadDefault() et appellé dans la méthode Maman::load() (c'est le polymorphisme : liaison dynamique des méthodes)

    Sauf que j'ai un membre de la classe mere qui n'est pas accessible depuis ma méthode surchargée Fille::loadDefault().

    Dans Maman::load() j'initialise un membre privé (un DOMDocument en l'occurence) qui est utilisé dans loadDefault() que ce soit depuis la classe Maman ou Fille. SAuf que dans Fille, il me di que je fais appelle a un méthode qui n'existe pas (car je fais appelle a la méthode DOMDocument::createElement().

    En débuggant à coup de var_dump() je me suis aperçu que jusqu'avant l'appelle de loadDefault() mon membre était bien initialisé. Sauf que des que je passe dans Fille::loadDefault().. l'initialisation a disparu comme si PIOUFFF!

    Un idée sur le problème??

  2. #2
    Membre chevronné Avatar de icer
    Inscrit en
    Janvier 2006
    Messages
    332
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 332
    Par défaut
    (c'est le polymorphisme : liaison dynamique des méthodes)

    Dans Maman::load() j'initialise un membre privé (un DOMDocument en l'occurence) qui est utilisé dans loadDefault() que ce soit depuis la classe Maman ou Fille. SAuf que dans Fille, il me di que je fais appelle a un méthode qui n'existe pas
    En effet si tu déclare le membre en tant que privé, par définition il ne sera pas accessible depuis les classes filles. Il faut que tu le déclare en tant que protégé.

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

Discussions similaires

  1. [POO] problème de surcharge des parenthèses
    Par oswalidos dans le forum C++
    Réponses: 10
    Dernier message: 27/10/2008, 09h23
  2. [POO]Probléme de constructeur virtuel surchargé
    Par Laurent Dardenne dans le forum Delphi
    Réponses: 10
    Dernier message: 15/08/2006, 12h19
  3. Petit probléme de surcharge d'opérateur .
    Par Clad3 dans le forum C++
    Réponses: 20
    Dernier message: 11/04/2005, 20h15
  4. Problème de surcharge d'opérateurs
    Par Hell dans le forum C++
    Réponses: 17
    Dernier message: 17/01/2005, 16h01
  5. Réponses: 2
    Dernier message: 25/07/2004, 23h24

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