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] Méthode privée définie dans une classe dérivée qui ne s'exécute pas


Sujet :

Langage PHP

  1. #1
    Membre expérimenté Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Points : 1 539
    Points
    1 539
    Par défaut [POO] Méthode privée définie dans une classe dérivée qui ne s'exécute pas
    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
    <?php
    class BaseClass {
    	public function A($f){
    		$this->$f();
    	}
    }
     
    class SubClass extends BaseClass {
    	private function B(){
    		echo 'coucou, je ne m\'execute pas !';
    	}
    }
     
    $a = new SubClass();
    $a->A('B');
    ?>
    Bug ou pas bug ?

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Points : 910
    Points
    910
    Par défaut
    Salut,

    J'ai testé (PHP 5.2.1) et j'obtiens :
    Fatal error: Call to private method SubClass::B() from context 'BaseClass'
    La méthode B doit être déclarée protected pour que ça fonctionne. Je suis pas expert en POO mais dans un sens ça me parait logique (private = classe seulement, protected = classe et hiérarchie).
    Toute la documentation Ruby on Rails : gotapi.com/rubyrails
    Mes articles :
    > HAML : langage de template pour Ruby on Rails

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Points : 2 284
    Points
    2 284
    Par défaut
    Je me suis dit la même chose dans un premier temps. Mais si tu dump this dans A(), tu obtiens bien un objet subclass.
    Donc on devrait pouvoir accéder à ces méthodes.
    Mais bon je ne suis pas expert non plus, et n'ayant que très peu programmer dans d'autres langages, je n'ai pas de point de comparaison : /

  4. #4
    Membre confirmé Avatar de goodpz
    Profil pro
    Inscrit en
    Février 2007
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 475
    Points : 514
    Points
    514
    Par défaut
    Bug ou pas bug ?
    Pas bug mais il serait fort intéressant que php nous laisse la possibilité de faire un dynamic cast dans un pareil cas.

  5. #5
    Membre expérimenté Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Points : 1 539
    Points
    1 539
    Par défaut
    Je pense aussi que c'est pas un bug, ça m'a pas empêché de proposer le changement sur le bugtracking de php.net

    Discussion que vous pouvez suivre ici : http://bugs.php.net/bug.php?id=40840

Discussions similaires

  1. Redéfinir une méthode static dans une classe dérivée
    Par michelp3 dans le forum Général Java
    Réponses: 5
    Dernier message: 06/05/2015, 22h28
  2. Réponses: 2
    Dernier message: 01/04/2011, 16h19
  3. Réponses: 2
    Dernier message: 06/03/2009, 09h52
  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: 17/12/2005, 20h52

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