Se connecter avec
S'enregistrer | Connectez-vous

[Résolu] PHP et POO : Problème de surcharge

Dernière réponse : dans Programmation

Bonjour à vous mon problème et pas tres compliqué mais je sais pas comment le résoudre...
  1. Class Maman {
  2. public function __construct() {
  3. $this->load();
  4. }
  5.  
  6. public function load() {
  7. if (...) {
  8. /// du code
  9. } else {
  10. $this->loadDefault();
  11. }
  12. }
  13.  
  14. public function loadDefault() {
  15. //...
  16. }
  1. Class Fille extends Maman {
  2. public function __construct() {
  3. parent::_construt();
  4. //...
  5. }
  6.  
  7. public function loadDefault() {
  8. //...autre chose que Maman::loadDefault()
  9. }


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??
Lassé par la pub ? Créez un compte

Tu connais la POO et le notion d'héritage et de polymorphisme??
  1. Class Fille extends Maman
Ca, ça veut dire que le classe fille EST la classe Maman + ce que tu rajoute. En Java le code que j'ai écris devrait fonctionner...
Lassé par la pub ? Créez un compte
Tom's guide dans le monde